私はPythonを使ってサーバを書いており、UDP経由で通信する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