Am 20.04.2011 00:21, schrieb Grant Edwards:
I'm have problems figuring out how to receive UDP broadcast packets on Linux.
[...]
On the receiving machine, I've used tcpdump to verify that broadcast packets are being seen and have a destination IP of 255.255.255.255 and destination MAC of ff:ff:ff:ff:ff:ff
[...]
But, the receiving Python program never sees any packets unless the _source_ IP address in the packets is on the same subnet as the receiving machine. In this test case, the receiving machine has an IP address of 172.16.12.34/16. If I change the receiving machine's IP address to 10.0.0.123, then the receiving program sees the packets. Even though the destination address is 255.255.255.255, the receiving machine appears to discard the packets based on the _source_ IP. Can anybody provide example Python code for Linux that receives UDP broadcast packets regardless of their source IP address? This probably is more of a Linux networking question than a Python question, but I'm hoping somebody has solved this problem in Python.
You must set the network interface to promiscous mode on the receiving side: os.system("ifconfig eth0 promisc") Thomas -- http://mail.python.org/mailman/listinfo/python-list