Python原始多播

时间:2016-05-14 12:26:15

标签: python networking multicast

我正在尝试用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))

1 个答案:

答案 0 :(得分:0)

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

无效的设置是运行python的libvirt主机和带有openbsd发送鲤鱼的kvm VM。

工作设置是两个VM,一个openbsd发送鲤鱼,一个Debian / Linux运行python代码。