簡體   English   中英

Python UDP廣播不發送

[英]Python UDP Broadcast not sending

我正在嘗試從Python程序到兩個LabView程序的UDP廣播。 我似乎無法播放廣播,我不知道我的套接字初始化是錯誤的,廣播似乎很簡單? 據我所知,其他PC沒有收到任何數據。 此外,我將需要此程序以便將來從其他PC接收數據。 這似乎不應該讓事情變得復雜,但對我而言,每一步都很復雜!

背景:我沒有軟件經驗,這只是我在工作中分配的東西。 任何幫助表示贊賞。 代碼如下。 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 dst添加器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM