让我解释一下我正在做的应用程序。
我正在为多个并发客户机创建一个中心UDP(需要是UDP)服务器,这些客户机之间也会“对话”。
我检查已知客户机地址的dict,如果“我不知道”客户机,则创建一个客户机处理程序线程。否则,线程将接收AD执行其任务的数据。
新线程接收到对套接字和调用方地址的引用,因此它们将socket.sendto与该地址和数据一起使用。
当一个客户机关闭它的客户机(alt+f4)并且有人与em交谈时,问题就会出现,因为套接字抛出10054错误,“套接字连接重置”。我想,在UDP中是不可能的。
客户端线程上的“talk”方法也位于try&except标记之间,但仍然是UDP服务器“recvFrom”触发异常的服务器。
我使用的是python 2.5(代码需要它)和这个socket选项:
host = "0.0.0.0"
port = 10000
UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
UDPSock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
UDPSock.bind((host,port))
有一些选择可以让我做我想做的,或者一个图书馆可以解决这些问题?.
或者如果我做错了…有一种方法可以做/模拟与线程TCP套接字(在接受时创建一个新的客户端处理程序线程)相同的行为,但是使用UDP?
感谢阅读;)