一.udp双向通信
1.fork进程实现双向通信
【1】head.h
【2】client客户端
(1)父进程从键盘获取字符串
(2)输入quit,发送结束子进程信号
(3)exit退出父进程
(1)子进程接受信息
(2)getppid用于退出父进程
【3】server服务器
注意:在通信前,客户端需要先发一条消息用于服务器获取客户端信息
(1)父进程发送信息,输入quit发送信号结束子进程并退出
(2)子进程接受信息,输入信息获取父进程pid并结束父子进程
2.pthread线程实现udp双向通信
【1】client客户端
注意:定义全局变量sockaddr_in不用向线程传参.
【2】server服务器
同样,服务器需要先获取客户端信息
二,udp实现文件复制
1.client客户端
(1)首先,向服务器传入文件名
(2)读取文件,进行传输
打开新文件并写入
三.udp实现聊天室
1.实现思路梳理
2.head.h
(1)定义结构体msg_t用于存储客户端数据
type:用于存储客户端状态
name:用于存储客户端名字
text:用于存储需要发送的文本
(2)MSG_TYPE分为进入,发送,退出三种状态
3.client客户端
(1)记录状态为进入,获取名字,初始化文本
(2) 发送客户端信息,由服务器接受后向其他客户端发送接入信息
创建线程进行读写
线程1:(1)在读操作里定义结构体用于读取其他客户端信息
(2)读取服务器发送来的其他客户端信息
(3)打印发送人和发送消息
注:定义两个全局变量后,不用向线程传参
线程2:(1)从键盘获取发送消息
(2)
【1】如果是quit就将状态变为QUIT,向服务器发送结构体,服务器读取后向其他客户端发送退出信息,并删除客户端信息
【2】如果是其他消息,向服务器发送,由服务器发送给其他客户端
4.server服务器
(1)定义能接入的客户端的宏为10
(2)定义结构体的数组用于接受这些客户端的信息
(1)接收接入的客户端信息
(2)读取客户端状态
【1】LOGIN接入状态
1.将信息记录在结构体的数组中
2.向其他客户换发送接入信息
注:其他客户端为接入状态,且将存储的地址与客户端进行对比,向除了自己的其他客户端发送信息
【2】CHAT状态
直接发送结构体信息
【3】QUIT状态
(1)向其他客户端发送退出信息
(2)清空客户端结构体信息