2010-12-07 5 views
3

Ich verwende Python verdreht und ich habe zwei separate Server arbeiten, eine, die TCP recieves, eine, die UDP empfängt und sie verwenden jeweilsWie kann ich den Server auf TCP und UDP warten lassen?

reactor.listenTCP(PORT, factory) 
reactor.run() 

und

reactor.listenUDP(PORT, BaseThreadedUDPServer()) 
reactor.run() 

sie beide arbeiten, aber ich jetzt Ich möchte sie zu einem Server kombinieren, der sowohl TCP als auch UDP empfängt, aber beide verwenden die Variable reactor. Ist nicht die reactor twisted's, nicht meine eigene. Wenn es mein eigenes wäre, könnte ich einfach den Namen für jeden ändern.

Vielen Dank!

+0

BaseThreadedUDPServer? Ist Threading wirklich eine Voraussetzung? Ich denke, es macht die Frage unnötig kompliziert. In Zukunft wird es außerdem hilfreich sein, ein vollständiges ausführbares Programm anstatt nur eines Snippets zu veröffentlichen. Siehe http://sscce.org/ – Glyph

Antwort

5

Dies ist nur eine Umformulierung von MarkR Antwort, was recht ist, aber ich dachte, es könnte etwas klarer sein, genau zu formulieren, wie das funktioniert:

Statt dessen, was Sie vorschlagen, wie dies Ihr Programm aussehen sollte :

reactor.listenTCP(PORT, factory) 
reactor.listenUDP(PORT, BaseThreadedUDPServer()) 
reactor.run() 

Es ist hilfreich zu denken reactor.run() dahin „führen Sie das gesamte Programm, und dann beenden, ich bin fertig“. Sie sollten den Reaktor nur einmal pro Programm betreiben. Vor dem Ausführen und während des Betriebs können Sie jedoch beliebig viele Methoden aufrufen, um nach neuen Protokollen zu horchen oder neue zeitgesteuerte Ereignisse aufzurufen.

+0

omg, danke. das ist, was ich gesucht habe. Ich hatte das im Hinterkopf, ich wusste einfach nicht, ob du das so machen kannst und ich bin neu in Twisted, also verstehe ich es nicht wirklich gut. ich danke Ihnen für Ihre Erklärung! :-) – umm

4

können Sie rufen listenTCP und listenUDP beim Start, so oft wie Sie wollen, bevor reactor.run()

Dann wird Ihre Rückrufe zu gegebener Zeit für die entsprechenden Protokolle aufgerufen werden, und Sie können handhaben sie entsprechend.

Verwandte Themen