通过 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.: 抱歉上次发错了。
我正在尝试编写一个简单的信使,向本地网络中的所有计算机发送广播消息。该代码适用于 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.: 抱歉上次发错了。