Reputation: 20637
I am trying to put together a UDP server with a wxPython GUI.
Here is a link to the code:
I have linked it as its pretty lengthy. I have successfully got the UDP server running on the thread but I can not figure out how to close the socket when the stopping the thread.
At the moment it will kick up a new thread each time you click start but I will be removing this. Is it possible to close the socket from running when the thread is stopped?
If I am doing this the complete wrong way any advice is appreciated.
Cheers
Eef
Upvotes: 0
Views: 777
Reputation: 2257
Use Python Twisted. It has wxPython integration with twisted.internet.wxreactor and makes networking easy and threadless.
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()
Upvotes: 2