【问题标题】:BroadCast message over ip python windows 10通过ip python windows 10广播消息
【发布时间】:2015-11-03 08:06:13
【问题描述】:

我正在尝试编写一个简单的信使,将广播消息发送到本地网络中的所有计算机。该代码适用于 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()

【问题讨论】:

  • 考虑接受有帮助的答案。要接受答案,请单击最佳答案旁边的空心复选标记,这样做会提高您的声誉并提供更多功能,请参阅reputation faq 更多详细信息,请参阅this page

标签: python broadcast


【解决方案1】:

更新到 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)

将地址从'&lt;broadcast&gt;' 更改为设置广播位的网络地址在我的系统上有效。

例如我有一个 IP 为 172.16.1.x 网络掩码为 255.255.255.0 的 C 类网络。将 '&lt;broadcast&gt;' 更改为 '172.16.1.255' 就可以了。通常这是由操作系统完成的。

PS.: 抱歉上次发错了。

【讨论】:

  • 这不是答案。你应该留在cmets。如果您无法发表评论,请等到您可以发表评论
  • 这并不试图回答这个问题。
  • 感谢您的工作。我在一个 192.168.1.X 的 C 类网络上。我用的是 192.168.1.255,可以看到广播包正常工作。