Ho scritto un server utilizzando Python e la libreria Twisted che comunica tramite UDP. Tutto funziona bene.Come si ascoltano più porte udp usando twistato?
Quello che vorrei fare è estendere tale server in modo che possa accettare i messaggi su più porte UDP contemporaneamente (io uso le diverse porte per separare le informazioni restituite, ed è meno la fonte della richiesta). Ho cercato di fare la cosa più semplice in primo luogo come un test - ho scritto il codice che assomiglia a questo:
reactor.listenUDP(port, handler)
reactor.listenUDP(port+1, handler)
(La prima riga è quella originariamente nel mio server, la seconda linea è il secondo porto per ascoltare a)
Quando eseguo che, ricevo il seguente:.
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
prendo da questo che non posso aggiungere un secondo ascoltatore UDP, ma questo è esattamente quello che mi piacerebbe fare (in realtà, per fare un totale di 18 ascoltatori - è una lunga storia). Qualche idea su come fare questo?
potresti passare più istanze di handler invece dello stesso – jfs
Rakis ha lasciato una risposta corretta alla tua domanda, ma questo è anche un bug in Twisted - anche se si tratta di un errore, non dovresti mai ricevere un messaggio di errore inutile (e non dovresti mai vedere un errore di asserzione, punto). Si prega di presentare un bug all'indirizzo http://twistedmatrix.com/ – Glyph