2012-09-26 34 views
13

Bir Python programından iki LabView programına UDP yayını yapmaya çalışıyorum. Göndermek için yayın almak için görünmüyor olabilir ve benim soket başlatma yanlış nerede emin değilim, yayın yeterince basit görünüyor? Görebildiğim kadarıyla, diğer PC'ler tarafından alınmış bir veri yok. Ayrıca, gelecekte diğer bilgisayarlardan veri almak için bu programa ihtiyacım olacak. Bu, işleri karmaşıklaştırmamalı gibi görünüyor ama yolun her adımı benim için karmaşıktı!Python UDP Yayını göndermiyor

Arka plan: Sıfır yazılım deneyimim var, bu sadece işte atandığım bir şey. Herhangi bir yardım takdir edilir. Kod aşağıda. Python 2.7. Bir UDP sokete connect() gerekmez

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

Alıcınızın kodu nasıl görünür? –

+1

, UDP soketini bağlamaz(). Ayrıca, tüm güvenlik duvarlarının devre dışı olduğundan emin olun. – tMC

+0

Labview'de. Kodu iyi olsa da, yayınlamadığımda iyi çalışıyor. Tüm değiştirdiğim yayın kurmak için benim python kodum. – TDK

cevap

29

yapmanız gerekir:

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

DÜZENLEME: tcpdump ran başka makinede

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

: Bu benim için iş gibi görünüyor:

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.... 

You ca. n yükteki metne bakınız. Yayında Ethernet ve IP dst addrs.

+0

Evet, bunu tekrar denedim ve işe yaramıyor. Ayrıca, python kodunun tam olarak ne yaptığını ve iyi çalıştığını gösteren bir labview programım var, bu yüzden yayın sorunu python tarafında olmalı. – TDK

+0

@ user1686820 Sadece test ettim ve python çalışıyor. (düzenlemeye bakın). Laboratuvar görüşlerine aşina değilim, bu yüzden onunla bir ilgisi olup olmadığını size söyleyemem. – tMC

+0

garip, ben sadece ipi 169.254.255.255 olarak değiştirdim ve çalışıyor. Laboratuar görüşüne giderken daha önce gördüğümden beri bu bir LabView problemi olduğunu düşünüyorum. Yardım için teşekkürler. Bağlantı yerel adresleme için yayın adresi olan – TDK