通过ip广播消息python windows 10

Mei*_*pin 5 python broadcast

我正在尝试编写一个简单的信使,将广播消息发送到本地网络中的所有计算机。该代码适用于Windows 7,Ubuntu 14.10,但是当我尝试在Windows 10上使用它时,它甚至不发送udp包来广播,它什么也不做(用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()
Run Code Online (Sandbox Code Playgroud)

Ker*_*erm 3

更新到Win10后我也发现了同样的问题。我的 WOL.py(局域网唤醒)不再起作用。使用 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)
Run Code Online (Sandbox Code Playgroud)

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

例如,我有一个 C 类网络,IP 172.16.1.x 网络掩码 255.255.255.0。更改'<broadcast>''172.16.1.255'即可解决问题。通常这是由操作系统完成的。

PS:抱歉,上次发错了。