WxPython многопоточный UDP-сервер - PullRequest
0 голосов
/ 20 июля 2010

Я пытаюсь собрать сервер UDP с графическим интерфейсом wxPython.

Вот ссылка на код:

UDP-сервер pastie.org

Я связал это как довольно длинное. У меня успешно работает UDP-сервер в потоке, но я не могу понять, как закрыть сокет при остановке потока.

В данный момент он будет запускать новую тему каждый раз, когда вы нажимаете кнопку "Пуск", но я буду удалять это. Можно ли закрыть сокет от запуска, когда поток остановлен?

Если я делаю это совершенно неправильно, любой совет приветствуется.

Приветствия

Eef

1 Ответ

2 голосов
/ 20 июля 2010

Используйте Python Twisted.Он имеет интеграцию wxPython с twisted.internet.wxreactor и делает работу в сети простой и поточной.

from twisted.internet import wxreactor
from twisted.internet.protocol import DatagramProtocol

wxreactor.install()

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

# <GUI code>
# to start listening do port = reactor.listenUDP(<port>, MyProtocol())
# to stop do self.transport.stopListening() in MyProtocol
# or port.stopListening() from outside

from twisted.internet import reactor
reactor.registerWxApp(app)
reactor.run()
...