具有Twisted和QT4的异步UDP服务器

时间:2010-12-07 12:05:40

标签: qt4 udp twisted

这是我第一次写这里。如果我的英语不太好,我道歉。 我想用Twisted在Python中设置一个简单的UDP服务器。 GUI是基于QT4的,我需要在Windows或Linux环境中运行该应用程序。

代码非常简单:

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 个答案:

答案 0 :(得分:1)

使用PyQt4 integration reactor让Twisted和Qt合作运行:

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()