【发布时间】:2014-05-17 16:49:55
【问题描述】:
我有以下代码发送在子网中广播的udp 数据包。
from socket import *
s=socket(AF_INET, SOCK_DGRAM)
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
s.sendto('this is testing',('255.255.255.255',12345))
以下代码用于接收广播包。
from socket import *
s=socket(AF_INET, SOCK_DGRAM)
s.bind(('172.30.102.141',12345))
m=s.recvfrom(1024)
print m[0]
问题是它没有收到任何广播数据包。但是,它成功地接收到发送到该端口的正常 udp 数据包。
我的机器显然正在接收广播数据包,我使用netcat 进行了测试。
$ netcat -lu -p 12345
this is testing^C
那么,问题究竟出在哪里?
【问题讨论】:
-
您可能想检查您的 IP,因为我用我的 IP 尝试了您提供的方法,并且效果很好。而@John Zwinck 给出的答案也可以正常工作。
-
5 个八位字节的 IP 地址如何有效?怎么不出错?
标签: python sockets udp broadcast