/udp_demo

A simple UDP server by Python

Primary LanguagePython

用Python实现一个UDP服务端

要求

用Python 实现高效UDP服务端

  1. 有多个UDP客户端同时发送文件。
  2. 发送文件前,每个UDP客户端都会发送一个初始化文件信息数据包的请求给UDP服务端,请求包含文件名,文件大小,包数据数量,单个数据包大小的参数。UDP服务端收到后会保存这些文件信息,用于文件发送完后判断是否丢包。
  3. UDP服务端响应UDP客户端的请求后,UDP客户端才会正式发送文件。
  4. 每个UDP客户端将发送的文件分成多个1024字节的数据包发送,每个数据包会有一个编号,用于后续补发该数据包。UDP服务端收到数据包后按编号暂存,不需要响应UDP客户端 。
  5. UDP客户端将文件发送完成后,UDP客户端会多发送一个结束文件发送的数据包 。
  6. UDP服务端收到结束包后,判断已接收的数据包大小是否与上面初始化文件信息数据包的大小,数量一致。如果不一致说明有数据丢失会, 会将已缺失的编号包发送给UDP客户端 。
  7. UDP客户端接收到这个数据包后,会重新发送这些编号的数据包给UDP服务端。
  8. UDP服务端收到正确数据包后,按号排序然后保存成文件。如果还有数据包丢失,UDP服务端会重复上面操作给UDP客户端发送缺失数据包编号,UDP客户端继续重发。
  9. UDP服务端能不丢失数据 正确保存文件

结构

.
│--client1.py        UDP客户端
│--client2.py        UDP客户端
│--epoll_server.py   epoll io多路复用服务端
│--multi_server1.py  多线程服务端
│--multi_server2.py  多线程服务端
│--select_server.py  select io多路复用服务端