我正在尝试从 Python 程序到两个 LabView 程序进行 UDP 广播。我似乎无法发送广播,我不确定我的套接字初始化错误在哪里,广播似乎足够简单?据我所知,其他电脑没有收到任何数据。另外,我将来还需要这个程序来接收来自其他电脑的数据。看起来这不应该让事情变得复杂,但每一步对我来说都很复杂!
背景:我的软件经验为零,这只是我在工作中被分配的事情。任何帮助表示赞赏。代码如下。 Python 2.7。
from threading import Thread
import time
from socket import *
cs = socket(AF_INET, SOCK_DGRAM)
cs.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
cs.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
cs.connect(('<broadcast>', 5455))
while 1:
cmd = int(raw_input('send: '))
if (cmd == 1):
cs.send('1')
time.sleep(1)
你不需要connect()
改为 UDP 套接字:
cs.sendto(data, ('255.255.255.255', 5455))
编辑:这似乎对我有用:
from socket import *
cs = socket(AF_INET, SOCK_DGRAM)
cs.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
cs.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
cs.sendto('This is a test', ('255.255.255.255', 54545))
在另一台机器上我运行 tcpdump:
tcpdump -i eth1 port 54545 -XX
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
14:04:01.797259 IP 10.22.4.45.33749 > 255.255.255.255.54545: UDP, length 14
0x0000: ffff ffff ffff f0de f1c4 8aa6 0800 4500 ..............E.
0x0010: 002a 0000 4000 4011 2c81 0a16 042d ffff .*..@.@.,....-..
0x0020: ffff 83d5 d511 0016 fe38 5468 6973 2069 .........8This.i
0x0030: 7320 6120 7465 7374 0000 0000 s.a.test....
您可以在有效负载中看到文本。以及广播以太网和 IP 目标地址。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)