通过 ip python windows 10 的广播消息

BroadCast message over ip python windows 10

我正在尝试编写一个简单的信使,向本地网络中的所有计算机发送广播消息。该代码适用于 windows 7 , Ubuntu 14.10 但是当我尝试在 windows 10 上使用它时,它甚至不发送 udp 包到 broadcast ,它什么都不做(检查wireshark,没有外发包)

import socket
import sys
import traceback

dest=('<broadcast>',10100)
UDPSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

UDPSock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
while True:
    data = raw_input("Enter message to send or type 'exit': ")
    UDPSock.sendto(data, dest)
    if data == "exit":
        break
UDPSock.close()

我更新到Win10后发现了同样的问题。 我的 WOL.py (Wakeup On Lan) 不再工作了。 使用 tcpdump 检查。

我现在找到了解决方法。

# Broadcast it to the LAN.
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.sendto(send_data, ('172.16.1.255', 9)

将地址从 '<broadcast>' 更改为设置了广播位的网络地址在我的系统上有效。

例如我有一个 IP 为 172.16 的 Class C 网络。1.x 网络掩码 255.255.255.0。将 '<broadcast>' 更改为 '172.16.1.255' 即可。通常这是由 OS 完成的。

PS.: 抱歉上次发错了。