我使用 Python 和通过 UDP 通信的 Twisted 库编写了一个服务器。这一切都很好。
我想做的是扩展该服务器,以便它可以同时接受多个 UDP 端口上的消息(我使用不同的端口来隔离返回的信息,而不是关于请求的来源)。我尝试先做最简单的事情作为测试 - 我编写的代码如下所示:
reactor.listenUDP(port, handler)
reactor.listenUDP(port+1, handler)
(第一行是我服务器中最初的那个;第二行是要监听的第二个端口。)
当我运行它时,我得到以下信息:
File "./rspServer.py", line 838, in mainLoop
reactor.listenUDP(self.args.port+1, udpHandler)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/posixbase.py", line 347, in listenUDP
p.startListening()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/udp.py", line 86, in startListening
self._connectToProtocol()
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/udp.py", line 106, in _connectToProtocol
self.protocol.makeConnection(self)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/twisted/internet/protocol.py", line 665, in makeConnection
assert self.transport == None
AssertionError
我认为我不能添加第二个 UDP 监听器,但这正是我想做的(实际上,总共有 18 个监听器——说来话长)。关于如何做到这一点的任何想法?