Асинхронный UDP-сервер с Twisted и QT4 - PullRequest
0 голосов
/ 07 декабря 2010

я пишу здесь впервые.Я прошу прощения, если мой английский не так хорош.Я хочу настроить простой UDP-сервер в Python, используя Twisted.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 Ответ

1 голос
/ 07 декабря 2010

Используйте PyQt4 интегрирующий реактор , чтобы позволить 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()
...