0
Gibt es eine Möglichkeit, socket.recvfrom(buf)
zu verwenden, um alle IP- und UPD-Daten zu erhalten? insbesondere möchte ich den UDP-Header (Quellport, Zielport, Länge, Anwendungsdaten) sowie die IP-Spezifika wissen: Aus welcher IP kam sie, an welche Adresse wurde sie gesendet?Python - socket.recvfrom() erhalten ganze IP/UDP-Paket?
Snippet: (?)
addrinfo = socket.getaddrinfo(MULTICAST_ADDR, None)[0]
sock = socket.socket(addrinfo[0], socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(('', DEST_PORT))
#Join Multicast grp.
group = socket.inet_pton(addrinfo[0], addrinfo[4][0])
mreq = group + struct.pack('@I', 0)
sock.setsockopt(socket.IPPROTO_IPV6, socket.IPV6_JOIN_GROUP, mreq)
while True:
udp_data,ip_sender = sock.recvfrom(4000)
#Only returns udp data field and ip of sender
Im auf Fenster, und mit socket.SOCK_RAW hängt Gibt es Workarounds?
Ja, Sie haben Recht, brauchen Sie 'RAW_SOCKET'. – dsgdfg
Der zweite von 'recvfrom' zurückgegebene Wert ist ein Tupel, das die IP-Adresse und den Port des Absenders enthält (z. B.' ('192.168.4.135', 37754) '). –