wxPython线程UDP服务器

时间:2010-07-19 23:27:28

标签: python sockets multithreading wxpython udp

我正在尝试将UDP服务器与wxPython GUI放在一起。

以下是代码的链接:

UDP Server pastie.org

我把它链接起来非常冗长。我已经成功地在线程上运行了UDP服务器但是在停止线程时我无法弄清楚如何关闭套接字。

目前,每次点击开始时它都会启动一个新线程,但我将删除它。线程停止时是否可以关闭套接字?

如果我这样做完全错误的话,任何建议都会受到赞赏。

干杯

EEF

1 个答案:

答案 0 :(得分: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()