2012-09-26 39 views
13

Tôi đang cố gắng phát UDP từ chương trình Python đến hai chương trình LabView. Tôi không thể có vẻ để có được phát sóng để gửi và tôi không chắc chắn nơi khởi tạo ổ cắm của tôi là sai, phát sóng có vẻ đơn giản, đủ ?? Theo như tôi thấy, không có dữ liệu nào được nhận bởi máy tính khác. Ngoài ra, tôi sẽ cần chương trình này để nhận dữ liệu từ máy tính khác trong tương lai. Có vẻ như điều đó không nên phức tạp nhưng mọi bước đường đều phức tạp với tôi!Phát UDP của Python không gửi

Thông tin cơ bản: Tôi không có kinh nghiệm về phần mềm, đây chỉ là thứ tôi được chỉ định tại nơi làm việc. Bất kỳ trợ giúp được đánh giá cao. Mã dưới đây. 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) 
+0

Mã người nhận của bạn trông như thế nào? –

+1

không 'kết nối()' một ổ cắm UDP. Ngoài ra, đảm bảo tất cả các tường lửa đều bị vô hiệu hóa. – tMC

+0

Nó nằm trong Labview. Mã này là tốt mặc dù, nó hoạt động tốt khi tôi không phát sóng. Tất cả tôi đã thay đổi là mã python của tôi để thiết lập phát sóng. – TDK

Trả lời

29

Bạn không cần connect() vào một ổ cắm UDP, bạn cần phải:

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

EDIT: Điều này dường như làm việc cho tôi:

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

Mở máy khác tôi chạy 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 .*[email protected]@.,....-.. 
0x0020: ffff 83d5 d511 0016 fe38 5468 6973 2069 .........8This.i 
0x0030: 7320 6120 7465 7374 0000 0000   s.a.test.... 

Bạn ca n xem văn bản trong tải trọng. Cũng như phát sóng Ethernet và IP dst addrs.

+0

Vâng, tôi chỉ thử lại lần nữa và nó không hoạt động. Ngoài ra, tôi có một chương trình labview mà không chính xác những gì các mã python nào và nó hoạt động tốt, do đó, vấn đề phát sóng phải ở phía bên python. – TDK

+0

@ user1686820 Tôi vừa thử nghiệm nó và python hoạt động. (xem chỉnh sửa). Tôi không quen thuộc với labview vì vậy tôi không thể cho bạn biết nếu có bất cứ điều gì để làm với nó. – tMC

+0

lạ, tôi vừa thay đổi ip thành 169.254.255.255 và nó đang hoạt động. Tôi nghĩ rằng đây là một vấn đề LabView, kể từ khi tôi nhìn thấy nó trước khi bcasting labview để labview. Cảm ơn đã giúp đỡ. – TDK

Các vấn đề liên quan