Hi Russell, In an old script I've written, I see the following differences with your code:
I hadn't used at all allsetBroadcastAllowed() but joinGroup() (in startPrtotocol). And I don't think the 255.255.255.255 will work. You'll need something like 192.168.1.1 or 127.0.0.1 The code (stripped from irrelevant parts) was: from twisted.internet.protocol import DatagramProtocol from twisted.internet import reactor from twisted.application.internet import MulticastServer # Set ports and hosts ip = '224.0.5.228' port = 8228 # our interface interface = '192.168.1.1' class MulticastClientUDP(DatagramProtocol): def startProtocol(self): # Join the multicast group self.transport.joinGroup(ip, interface) self.transport.setTTL(255) def datagramReceived(self, datagram, address): print "got a UDP broadcast packet" # set reactor to listen on multicast channels alertsClient = MulticastClientUDP() reactor.listenMulticast(port, alertsClient) reactor.run() Pantelis Theodosiou On Fri, Aug 8, 2014 at 11:58 PM, Russell E. Owen <ro...@uw.edu> wrote: > I've found an example for UDP broadcasting: > <https://twistedmatrix.com/trac/browser/trunk/docs/projects/core/examples > /udpbroadcast.py?rev=41516 > <https://twistedmatrix.com/trac/browser/trunk/docs/projects/core/examples/udpbroadcast.py?rev=41516> > > > > However, it combines the sender and receiver in a way that I find > confusing. I figured out how output UDP broadcast packets, but not how > to make a client that receives to the packets. > > Here is what we have, which doesn't work. Based on a comment on the > broadcast UDP ticket. I suspect the problem is specifying the broadcast > address using the interface argument to listenUDP, but I'm not sure. In > any case, no value for interface that I've tried works: > -"<broadcast>" (which is what my senders uses) results in > twisted.internet.error.InvalidAddressError > -"255.255.255.255" results in twisted.internet.error.CannotListenError: > Couldn't listen on 255.255.255.255:1235: [Errno 49] Can't assign > requested address. > - omitting it results in no packets received. > I also tried listenMulticast, but it didn't work (and I didn't expect it > to, based on comments I saw on the ticket for implementing UDP broadcast > support). > > Any hints would be appreciated. > > #!/usr/bin/env python2 > """Attempt to listen to UDP broadcasts > """ > from twisted.internet.protocol import DatagramProtocol > from twisted.internet import reactor > > Port = 1235 > > class BroadcastUDPClient(DatagramProtocol): > def startProtocol(self): > self.transport.setBroadcastAllowed(True) > > def datagramReceived(self, datagram, address): > print "got a UDP broadcast packet" > > class UDPListener(object): > def __init__(self, port): > self.port = port > self.broadcastClient = BroadcastUDPClient() > self.listener = None > self.startListening() > > def startListening(self): > if self.listener is None: > interface = "255.255.255.255" > self.listener = reactor.listenUDP(self.port, > self.broadcastClient, interface) > > def stopListening(self): > if self.listener is not None: > self.listener.stopListening() > self.listener = None > > if __name__ == "__main__": > listener = UDPListener(Port) > reactor.run() > > > _______________________________________________ > Twisted-Python mailing list > Twisted-Python@twistedmatrix.com > http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python >
_______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python