2012-09-26 28 views
13

私はPythonプログラムから2つのLabViewプログラムにUDPブロードキャストしようとしています。私はブロードキャストを送信するように見えることができないと私はソケットの初期化が間違っているか分からない、放送は簡単だと思われる??私が見る限り、他のPCのデータは受信されません。また、私はこのプログラムが将来他のPCからデータを受け取るために必要になります。物事は複雑ではないはずですが、方法のすべてのステップは私のために複雑でした!Python UDPブロードキャストが送信されない

背景:私はソフトウェアの経験はありません。これは私が職場で割り当てられたものです。どんな助けもありがとうございます。コードは以下のとおりです。 Python 2.7。あなたはUDPソケットにconnect()をする必要はありません

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) 
+0

受信機のコードはどのように見えますか? –

+1

UDPソケットを 'connect()'しないでください。また、すべてのファイアウォールが無効になっていることを確認してください。 – tMC

+0

これはLabviewにあります。コードはうまくいきますが、放送していないときはうまく動作します。私が変更したのは、放送を設定するためのPythonコードです。 – TDK

答えて

29

、以下を行う必要があります。

cs.sendto(data, ('255.255.255.255', 5455)) 

EDITは:私はtcpdumpを走った別のマシン上で

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 -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 .*[email protected]@.,....-.. 
0x0020: ffff 83d5 d511 0016 fe38 5468 6973 2069 .........8This.i 
0x0030: 7320 6120 7465 7374 0000 0000   s.a.test.... 

nペイロードのテキストを参照してください。ブロードキャストイーサネットおよびIP dstアドレスと同様に。

+0

いや、もう一度試してみるとうまくいきません。また、私は、正確には、Pythonコードを行うと、それはうまく動作するlabviewプログラムを持っているので、ブロードキャストの問題は、Python側にする必要があります。 – TDK

+0

@ user1686820私はそれをテストし、Pythonが動作します。 (編集を参照)。私はlabviewに慣れていないので、それが何かと関係があるかどうかはわかりません。 – tMC

+0

奇妙なことに、私はipを169.254.255.255に変更しました。私はこれがLabViewの問題だと思う。なぜなら、labviewをlabviewに放送する前にそれを見たからだ。助けてくれてありがとう。 – TDK

関連する問題