2010-12-07 3 views
3

私のpythonがねじれと私は2台の別々のサーバの作業、TCPをrecieves 1、UDPを受けるものを持っていて、それぞれがどのように私はサーバーがTCPとUDPをリッスンできるようにすることができますか?

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

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

彼らに両方の仕事を使用していますが、今使用していますTCPとUDPの両方を受信する1つのサーバーにそれらを結合したいが、両方とも変数reactorを使用する。 reactorは私のものではなくねじれたものではありません。それが私のものならば、それぞれの名前を変えることができます。

ありがとうございました!

+0

BaseThreadedUDPServer?スレッディングは本当にここの要件ですか?私はそれが不必要に問題を複雑にすると思う。また、将来的にはスニペットの代わりに完全で実行可能なプログラムを投稿するのに役立ちます。 http://sscce.org/ – Glyph

答えて

5

これは権利であるMarkRの答え、の単なる言い換えですが、私はこの作品正確にどのように綴るために少し明確かもしれないと思った:

代わりにあなたが提案する何を、あなたのプログラムは次のようになります。 :

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

それが意味するものとしてreactor.run()を考えると便利です「全体のプログラムを実行し、終了し、私は終わりです」。原子炉はプログラムごとに1回だけ実行する必要があります。ただし、実行する前に、実行中に新しいプロトコルをリッスンしたり、新しいタイムドイベントを呼び出すのに好きなだけ多くのメソッドを呼び出すことができます。

+0

mgを参照してください、ありがとうございます。これは私が探していたものです。私はそれを念頭に置いていました。あなたがそれを好きにすることができるかどうかわかりませんでした。私はひねった状態で新しいので、とてもうまく理解できません。説明ありがとうございます! :-) – umm

4

あなたはちょうどあなたが次にあなたのコールバックが適切なプロトコルのための適切な時点で呼び出されます()

reactor.run前に、何度でも、起動時にlistenTCPとlistenUDPを呼び出すことができ、あなたが扱うことができますそれに応じて

関連する問題