2010-12-07 9 views
0

ここに初めて書きます。私の英語があまり良くないとお詫び申し上げます。 Twistedを使ってPythonで単純なUDPサーバーを設定したいと思います。 GUIはQT4ベースであり、WindowsまたはLinux環境の両方でアプリケーションを実行する必要があります。TwistedとQT4を使用した非同期UDPサーバー

コードは非常に単純です:

from twisted.internet.protocol import DatagramProtocol 
from twisted.internet import reactor, stdio 
from twisted.protocols.basic import LineReceiver 

class UDPLineReceived(DatagramProtocol): 
    def datagramReceived(self, data, (host, port)): 
    print "received %r from %s:%d" % (data, host, port) 

reactor.listenUDP(int(self.inPort.text()), UDPLineReceived()) 
reactor.run() 

これは、定義されたポートに送信されたパケットを受信したが、それはユーザーインターフェースをハングアップします。 "非同期"モードで動作させるには、コードをどのように変更するべきかと思います。

その他の情報が必要な場合は教えてください!事前
マーク

答えて

1


おかげでツイストとQtが協調実行できるようにPyQt4 integration reactorを使用します。

app = QApplication(...) 
import qt4reactor 
qt4reactor.install() 

from twisted.internet.protocol import DatagramProtocol 
from twisted.internet import reactor, stdio 
from twisted.protocols.basic import LineReceiver 

class UDPLineReceived(DatagramProtocol): 
    def datagramReceived(self, data, (host, port)): 
     print "received %r from %s:%d" % (data, host, port) 

reactor.listenUDP(int(self.inPort.text()), UDPLineReceived()) 
reactor.run() 
+0

ありがとうございました。ちょうど質問:qt4reactorのREADMEファイルは、フォルダをPYTHONPATHに解凍するように言います。しかし、私はそれをPython26のルートまたはLib \ SitePackagesに解凍すべきですか?どこにねじれたフォルダがありますか? – Mark

+0

問題ありません。それはうまく動作します。ありがとうございました! – Mark

関連する問題