2010-07-19 3 views
0

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

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

UDP Server pastie.org

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

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

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

Приветствия

Eef

ответ

2

Использование 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() 
+0

Отличная разработанная префектура, приветствия – RailsSon