当前位置: 首页 > news >正文

socket_udp

目录

1.服务端的实现Server:

1.1 UdpServer类结构概要:

1.2 主要成员函数讲解:

1.2.1 Init

(1)创建udp_socket

(2)绑定(bind) socket

1.2.2 Run

(1)接收客户端的消息:recvfrom

(2)检查用户是否第一次登入:CheckUser

(3)广播消息:Broadcast

2.客户端的实现Client:

2.1  概述过程:

2.2 具体实现:

2.2.2 接收信息 recv_message:

2.2.3 发送信息 send_message:

3.测试案例:

3.1 打开服务端:

3.2 打开客户端:

3.3 展示通信效果:

4.完整代码:


1.服务端的实现Server:

1.1 UdpServer类结构概要:

创建一个UdpServer类,其成员变量

成员函数

UdpServe        ~UdpServe        Init        Run        CheckUser        Broadcat

1.2 主要成员函数讲解:

1.2.1 Init

(1)创建udp_socket

(2)绑定(bind) socket

先初始化struct socketaddr_in local        (sin_family  sin_port  sin_addr)

端口号和IP地址都要网络序列化(大端存储)

用到了htons()和inet_addr()

然后再bind

1.2.2 Run

(1)接收客户端的消息:recvfrom

(2)检查用户是否第一次登入:CheckUser

 通过unordered_map进行匹配查找。

(3)广播消息:Broadcast

把接收到的消息发送给所有用户的客户端。

sendto() 发送消息给客户端

2.客户端的实现Client:

2.1  概述过程:

采用多线程的方式实现,客户端既可以发送消息,也能接收消息。所有创建了2个线程,并创建一个结构体【struct ThreadData】来描述线程信息。

准备通信:还是和服务端一样创建socket,初始化服务端的各种成员,此处不需要手动bind,其客户端已经自动bind了。

然后让两个线程,一个发送信息,一个接收消息。

2.2 具体实现:

2.2.1 创建socke并初始化

2.2.2 创建线程:

2.2.2 接收信息 recv_message:

2.2.3 发送信息 send_message:

3.测试案例:

3.1 打开服务端:

3.2 打开客户端:

开启2个终端:【1】一个发送消息,【0】一个接收消息。

为什么要  2>  因为接收到消息后,打印到错误屏幕上,其文件描述符为2.

3.3 展示通信效果:

目前还存在终端缓存区问题。

4.完整代码:

全文代码:

Linux: 记录Linux学习。

http://www.dtcms.com/a/569183.html

相关文章:

  • 基于单片机的智能家居窗帘控制系统设计(论文+源码)
  • Nestjs框架: 微服务架构拆分原则与实战指南
  • WinSCP的简单使用与SFTP自动备份 .bat脚本
  • iOS 虚拟位置设置实战,多工具协同打造精准调试与场景模拟环境
  • Qt 全球峰会 2025:中国站速递 —— 技术中立,拥抱更大生态
  • Android集成Unity避坑指南
  • 我的网站设计联盟网站推广营销应该怎么做
  • 从零开始刷算法-栈-括号匹配
  • 走进Linux的世界:初识进程(Task)
  • 首钢建设集团山东公司网站2017年网站建设公司
  • 让数据库更智能-大模型如何优化我们的SQL查询
  • 什么程序做网站容易优化apache和wordpress
  • NLP自然语言处理Bert大模型系列学习
  • 数据科学每日总结--Day10--数据库
  • 【实战】自然语言处理--长文本分类(3)HAN算法
  • 中国建设工程招投网站网站后台登陆口
  • 学校网站建设招聘电商推广计划
  • Ubuntu 20.04 系统库管理详细教程
  • [jmeter-商城测试]
  • Kubernetes包管理利器:Helm核心功能与架构解析指南
  • 17、docker-macvlan-1-理论
  • Mac M系列芯片制作Oracle19镜像使用docker-compose运行
  • Linux source命令详解与应用场景
  • Verilog学习 有限状态机
  • 企业网站备案审核需要多长时间沧州大型企业网站建设
  • Figma高效开发工具链:从设计到测试的完整解决方案
  • React(二):构建一个简单的聊天助手学到的React知识
  • seo优化网站的注意事项北京网络职业学院
  • JWT的说明和使用
  • MFC - 使用 Base64 对图片进行加密解密