首页 > 解决方案 > UDP广播不起作用,是什么问题?

问题描述

我正在运行一个应该在广播中发送“嘿”的代码,问题是它不起作用,我不知道为什么。这是代码:

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()

标签: pythonsocketsnetworking

解决方案


在您发布的代码中,main未调用函数。添加main()通话


推荐阅读