2016-05-14 15 views
0

Ich versuche Multicast-Verkehr mit Python zu hören. Ich versuche, das Dekodierungsprotokoll zu hören, also ist es kein UDP. Aber ich erhalte keine Daten.Python rohe Multicast

Wenn ich auf dem gleichen Host eine Anwendung verwende, die auf den Karpfentransport (ucarp) lauscht, sieht die Anwendung den Verkehr, also sollte es funktionieren. Hier

ist der Code Ich verwende:

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

Antwort

0

In der Tat, dieser Code funktioniert. Das Netzwerk-Setup, das ich verwendet habe, nicht. Ich weiß nicht, warum das mit ucarp und nicht mit python funktionierte.

Das Setup, das nicht funktionierte, war ein libvirt-Host, auf dem der Python läuft, und eine kvm-VM mit openbsd, die den Karpfen sendete.

Das funktionierende Setup besteht aus zwei VMs, einem openbsd, der den Karpfen sendet, und einem Debian/Linux, auf dem der Python-Code läuft.