socket_udp

目录

1.服务端的实现Server:

[1.1 UdpServer类结构概要:](#1.1 UdpServer类结构概要:)

[1.2 主要成员函数讲解:](#1.2 主要成员函数讲解:)

[1.2.1 Init](#1.2.1 Init)

(1)创建udp_socket

[(2)绑定(bind) socket](#(2)绑定(bind) socket)

[1.2.2 Run](#1.2.2 Run)

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

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

(3)广播消息:Broadcast

2.客户端的实现Client:

[2.1 概述过程:](#2.1 概述过程:)

[2.2 具体实现:](#2.2 具体实现:)

[2.2.2 接收信息 recv_message:](#2.2.2 接收信息 recv_message:)

[2.2.3 发送信息 send_message:](#2.2.3 发送信息 send_message:)

3.测试案例:

[3.1 打开服务端:](#3.1 打开服务端:)

[3.2 打开客户端:](#3.2 打开客户端:)

[3.3 展示通信效果:](#3.3 展示通信效果:)

4.完整代码:


1.服务端的实现Server:

1.1UdpServer类结构概要:

创建一个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学习。

相关推荐
2601_961593423 分钟前
Mac 虚拟机跑 Linux 选哪个?CentOS 8 稳定版适配方案
linux·macos·centos
李小小钦8 分钟前
D. Storming Arasaka(Codeforces 2238)
c语言·开发语言·数据结构·c++·算法
ljs64827395112 分钟前
智慧商城(Smart Mall):基于 Spring Boot + Vue 3 的现代化电商平台实战
linux·vue.js·spring boot·后端
卷无止境18 分钟前
SFML 深度解读:一个教科书级 C++ 多媒体库的内功心法
c++·后端
run21professional28 分钟前
系统包管理器和语言级包管理器的区别,及其源配置
linux
阿成学长_Cain31 分钟前
Linux grpck命令超全详解|校验组文件完整性、修复/etc/group错误实战
linux·运维·服务器·网络
2401_8685347832 分钟前
案例介绍-小型网络规划及搭
python·计算机网络
量子罐头33 分钟前
光润通发布LYSH-LAN-V1.0家庭版智能安全路由器 主打国密级硬件加密
网络·安全·智能路由器
你觉得脆皮鸡好吃吗1 小时前
OAuth学习 下
网络·安全·web安全·网络安全学习
飞斯柯罗1 小时前
[飞斯柯罗] 想了解什么是网络安全资产和 KMS?
网络·安全·web安全