【发布时间】:2019-03-17 07:17:48
【问题描述】:
我正在运行一个应该在广播中发送“嘿”的代码,问题是它不起作用,我不知道为什么。代码如下:
import socket
def main():
searcher_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
searcher_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
searcher_socket.sendto("Hey", ("255.255.255.255", 9010))
response, address = searcher_socket.recvfrom(1024)
print response
main()
我在 Wireshark 中嗅了嗅,检查是否有什么东西从电脑里出来,但似乎什么都没有出来..
有人可以帮忙吗?提前致谢
编辑:我已经在另一台通过电缆而不是 wifi 连接到网络的计算机上测试了代码并且它工作正常。这两台计算机共享同一个网络。代码在一台计算机上运行而在另一台计算机上失败的原因可能是什么?
第二次编辑 - 解决方案:我找到了解决方案。因为电脑是通过wifi连接的,为了广播,你需要先将socket与你的ip地址绑定。
import socket
def main():
searcher_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
searcher_socket.bind(("192.168.1.11", 40400)) # 192.168.1.11 is my computer ip address
searcher_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
searcher_socket.sendto("Hey", ("255.255.255.255", 9010))
response, address = searcher_socket.recvfrom(1024)
print response
main()
【问题讨论】:
-
它是您计算机的一个 IP 地址。如果不是默认路由,则需要绑定到要发送广播的地址。
标签: python sockets networking