2016-05-14 39 views
0

我正在尝试使用Python来收听组播流量。我尝试听解码鲤鱼协议,所以它是原始的交通而不是UDP。但我没有收到任何数据。Python原始组播

如果在同一台主机上,我使用的器件的应用监听鲤鱼TRAFIC(ucarp),应用程序看到TRAFIC,所以它应该是工作。

这里是我使用的代码:

import socket 
import struct 

MCAST_GRP = '224.0.0.18' 

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, 112) 

s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
mreq = struct.pack("4sl", socket.inet_aton(MCAST_GRP), socket.INADDR_ANY) 
s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) 

print("waiting for data...") 
print(s.recvfrom(10)) 

回答

0

事实上,这个代码工作。我正在使用的网络设置,不是。我不知道为什么这是与ucarp,而不是python。

这是行不通的设置是运行Python和在OpenBSD发送鲤鱼一个KVM虚拟机中的libvirt的主机。

工作建立在两个虚拟机,一个OpenBSD系统发送的鲤鱼和一个是Debian/Linux上运行的Python代码。