Python UDP广播未发送

Python UDP广播未发送,python,udp,broadcast,labview,Python,Udp,Broadcast,Labview,我正在尝试从一个Python程序向两个LabView程序进行UDP广播。我似乎无法让广播发送,我不确定我的套接字初始化哪里出错,广播似乎足够简单??据我所知,另一台电脑没有收到任何数据。此外,我需要这个程序来接收数据从其他电脑的未来。这似乎不应该让事情复杂化,但对我来说,每一步都很复杂 背景:我没有软件经验,这只是我在工作中分配的东西。感谢您的帮助。代码如下。Python 2.7 from threading import Thread import time from socket i

我正在尝试从一个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)
从线程导入线程
导入时间
从套接字导入*
cs=插座(自动线、插座)
cs.setsockopt(SOL_插座,SO_REUSEADDR,1)
cs.setsockopt(SOL_套接字,SO_广播,1)
cs.连接(('',5455))
而1:
cmd=int(原始输入('send:'))
如果(cmd==1):
cs.send('1')
时间。睡眠(1)

您不需要将()连接到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 dst地址。

接收器的代码是什么样子的?不要
connect()
UDP套接字。另外,请确保所有防火墙都已禁用。它位于Labview中。虽然代码很好,但当我不广播时,它工作得很好。我所做的更改是设置广播的python代码。防火墙已关闭。connect()有什么问题?它在过去对我很有效,只是curious@tMC:
connect
可以使用UDP,但这不是标准做法。它所做的只是为所有未来的
send
调用设置默认目标地址,并限制套接字上所有未来的
recv
调用允许的源地址。它实际上不做任何网络连接。是的,我只是再试了一次,但它不起作用。另外,我有一个labview程序,它完全执行python代码的功能,并且工作正常,因此广播问题必须在python方面。@user1686820我刚刚测试了它,python工作正常。(请参见编辑)。我不熟悉labview,所以我不能告诉你这是否与它有关。奇怪的是,我刚刚将ip更改为169.254.255.255,它正在工作。我认为这是一个LabView问题,因为我以前在将LabView广播到LabView时看到过这个问题。感谢您的帮助。这可能是链接本地寻址的广播地址
255.255.255.255
不是子网IP网络的正确广播。@aag我认为您使用的是python3-您必须对数据进行编码:
cs.sendto(“TestText.encode(),(“255.255.255”,54545))
请参阅