Ich habe einen Server geschrieben mit Python und der Twisted-Bibliothek, die über UDP kommuniziert. Das alles funktioniert gut.Wie höre ich mehrere UDP-Ports mit Twisted?
Was ich tun möchte, ist diesen Server zu erweitern, so dass es Nachrichten auf mehreren UDP-Ports gleichzeitig akzeptieren kann (Ich verwende die verschiedenen Ports, um die zurückgegebenen Informationen zu trennen, und es geht weniger um die Quelle der Anfrage). Ich habe versucht, das einfachste, was zunächst als Test zu tun - ich Code geschrieben, der wie folgt aussieht:
reactor.listenUDP(port, handler)
reactor.listenUDP(port+1, handler)
(Die erste Zeile ist die ursprünglich in meinem Server, die zweite Zeile ist der zweite Anschluss zu hören to)
Wenn ich laufe, dass ich folgend:.
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
ich daraus nehmen, dass ich nicht einen zweiten UDP-Listener hinzufügen kann, aber das ist genau das, was ich tun möchte (eigentlich, um insgesamt 18 Zuhörer zu machen - es ist eine lange Geschichte). Irgendwelche Gedanken darüber, wie man das macht?
Sie könnten mehrere Handler-Instanzen statt derselben übergeben – jfs
Rakis hat eine richtige Antwort auf Ihre Frage hinterlassen, aber das ist auch ein Fehler in Twisted - auch wenn es ein Fehler ist, sollten Sie nie eine solche nicht hilfreiche Fehlermeldung erhalten (und Sie sollten nie einen Assertionsfehler sehen, Punkt). Bitte melden Sie einen Fehler unter http://twistedmatrix.com/ – Glyph