我正在使用 Python 中的 UDP 创建一个简单的套接字服务器,我想通过让接收器发送 ACK 来添加一些可靠性概念。我的发件人必须同时发送数据和接收这些 ACK。这样做的首选方法是什么?我应该同时创建一个发送和接收线程,使用某种非阻塞调用还是其他什么?
任何帮助将不胜感激!
有几个解决方案:
最简单的解决方案是在 stdlib 中,即具有 UDPServer的SocketServer模块 - 您可以为不同的消息类型设置处理程序并以这种方式启用您的状态机。还有一堆漂亮的混合线程和其他行为。
使用 libevent 进行异步网络编程的第三方模块gevent是另一种解决方案。
您可以使用scapy在原始套接字级别编写一些东西,但这会将所有繁重的工作都放在您身上,尽管毫无疑问有一些示例可以说明如何做您想做的事情。