필자는 Python을 사용하여 서버를 작성했으며 UDP를 통해 통신하는 Twisted 라이브러리를 작성했습니다. 이 모든 것이 잘 작동합니다.twisted를 사용하여 여러 UDP 포트를 수신하는 방법은 무엇입니까?
내가 원하는 것은 여러 개의 UDP 포트에서 동시에 메시지를 받아 들일 수 있도록 서버를 확장하는 것입니다. (다른 포트를 사용하여 반환 된 정보를 분리하고 요청 소스에 대해서는 적습니다). 내가 테스트로 먼저 간단한 일을 시도했습니다 -이 보이는 코드를 썼다 :
reactor.listenUDP(port, handler)
reactor.listenUDP(port+1, handler)
(첫 번째 줄은 원래 내 서버에 하나입니다, 두 번째 라인이들을 수있는 2 포트 에)
나는, 나는 다음과 같은 얻을 실행합니다.
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 명의 청취자를 만들려면 긴 이야기입니다.) 이 작업을 수행하는 방법에 대한 의견이 있으십니까?
동일한 핸들러 인스턴스 대신 여러 핸들러 인스턴스를 전달할 수 있습니다. – jfs
Rakis가 질문에 대한 올바른 답변을 남겼습니다. 그러나 이것은 Twisted의 버그이기도합니다. 오류 일지라도 그다지 도움이되지 않는 오류 메시지가 표시되지 않습니다. 그리고 어설 션 오류, 기간을 결코 보지 말아야한다). http://twistedmatrix.com/ – Glyph