我正在尝试用Python监听多播流量。我试着听解码鲤鱼协议,所以它的原始流量不是UDP。但我没有收到任何数据。
如果在同一台主机上,我使用应用程序监听鲤鱼交通(ucarp),应用程序会看到交通信息,所以它应该正常工作。
以下是我正在使用的代码:
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 :(得分:0)
事实上,这段代码正在运作。我正在使用的网络设置,而不是。我不知道为什么这个用ucarp而不是python。
无效的设置是运行python的libvirt主机和带有openbsd发送鲤鱼的kvm VM。
工作设置是两个VM,一个openbsd发送鲤鱼,一个Debian / Linux运行python代码。