我试着听Python的多播交易。我试着听鲤鱼协议的解码,所以它是原始的,而不是UDP。但我没有收到任何数据。
如果在同一台主机上,我使用了一个侦听鲤鱼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))发布于 2016-05-14 13:13:43
实际上,这段代码是有效的。我使用的网络设置,不是。我不知道为什么要用ucarp而不是python。
不起作用的设置是运行python的libvirt主机和带有openbsd发送鲤鱼的kvm。
工作设置是两个VM、一个openbsd发送carp和一个运行python代码的Debian/Linux。
https://stackoverflow.com/questions/37226643
复制相似问题