gpt4 book ai didi

python - 如何使用 twisted 监听多个 udp 端口​​?

转载 作者:太空狗 更新时间:2023-10-30 00:57:07 25 4
gpt4 key购买 nike

我使用 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 个监听器 - 这是一个很长的故事)。关于如何做到这一点有什么想法吗?

最佳答案

每次调用 listenUDP() 都需要一个唯一的处理程序实例。除此之外,您的代码看起来还不错。

关于python - 如何使用 twisted 监听多个 udp 端口​​?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11397020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com