udp broadcast example, please
Jp Calderone
exarkun at intarweb.us
Wed Dec 17 10:27:49 EST 2003
On Wed, Dec 17, 2003 at 01:22:25PM +0200, Torsten Rueger wrote:
> Moi,
>
> sorry, but I've searched and searched to find exact information on how
> to do a simple udp broadcast client/server, but can find it:
>
> I want to have a thread pinging (very small message) and possibly the
> same thread receiving maybe with a 1 second timeout. And the same code
> should be able to run as multiple instances on the same machine.
>
> Could someone with experience please post the 10 lines to make this
> happen. Please no general comments or things that "should" work. I've
> tried for hours with various socket options and addresses, so I would
> very much appreciate working code.
>
No threads, but maybe it's good enough anyway:
import sys
from socket import SOL_SOCKET, SO_BROADCAST
from twisted.internet import reactor
from twisted.internet import protocol
from twisted.internet import task
from twisted.python import log
log.startLogging(sys.stdout)
port = 7154
class BroadcastingDatagramProtocol(protocol.DatagramProtocol):
port = port
def startProtocol(self):
self.transport.socket.setsockopt(SOL_SOCKET, SO_BROADCAST, True)
self.call = task.LoopingCall(self.tick)
self.dcall = self.call.start(1.0)
def stopProtocol(self):
self.call.stop()
def tick(self):
self.transport.write(self.getPacket(), ("<broadcast>", self.port))
def getPacket(self):
return "Some bytes for you"
def datagramReceived(self, data, addr):
print "Received", repr(data)
reactor.listenUDP(port, BroadcastingDatagramProtocol())
reactor.run()
Jp
More information about the Python-list
mailing list