用Python实现一个UDP服务端
要求
用Python 实现高效UDP服务端
- 有多个UDP客户端同时发送文件。
- 发送文件前,每个UDP客户端都会发送一个初始化文件信息数据包的请求给UDP服务端,请求包含文件名,文件大小,包数据数量,单个数据包大小的参数。UDP服务端收到后会保存这些文件信息,用于文件发送完后判断是否丢包。
- UDP服务端响应UDP客户端的请求后,UDP客户端才会正式发送文件。
- 每个UDP客户端将发送的文件分成多个1024字节的数据包发送,每个数据包会有一个编号,用于后续补发该数据包。UDP服务端收到数据包后按编号暂存,不需要响应UDP客户端 。
- UDP客户端将文件发送完成后,UDP客户端会多发送一个结束文件发送的数据包 。
- UDP服务端收到结束包后,判断已接收的数据包大小是否与上面初始化文件信息数据包的大小,数量一致。如果不一致说明有数据丢失会, 会将已缺失的编号包发送给UDP客户端 。
- UDP客户端接收到这个数据包后,会重新发送这些编号的数据包给UDP服务端。
- UDP服务端收到正确数据包后,按号排序然后保存成文件。如果还有数据包丢失,UDP服务端会重复上面操作给UDP客户端发送缺失数据包编号,UDP客户端继续重发。
- UDP服务端能不丢失数据 正确保存文件
结构
.
│--client1.py UDP客户端
│--client2.py UDP客户端
│--epoll_server.py epoll io多路复用服务端
│--multi_server1.py 多线程服务端
│--multi_server2.py 多线程服务端
│--select_server.py select io多路复用服务端