J'essaie de recevoir des paquets multicast IPv6 (envoyés à l'adresse ff02::1) sur Windows en utilisant ce code python 2.7-.
import socket
import win_inet_pton
import struct
socket.IPPROTO_IPV6=41 #because using python 2.7 on wondows
PORT = 1234
UDP_BROADCAST_IPv6 = "ff02::1"
sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.bind(("",PORT)) # not working with "::" either
# Join multicast group
addrinfo = socket.getaddrinfo(UDP_BROADCAST_IPv6, None)[0]
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:
msg=sock.recv(1024)
print msg
J'envoie des paquets depuis un autre ordinateur qui est connecté à mon ordinateur. via Ethernet ; en outre, mon ordinateur dispose également d'une interface WiFi. Bien que je puisse voir les paquets pertinents en reniflant la connexion Ethernet avec Wireshark, les paquets ne sont pas reçus par ce code.
Cependant, quand je désactiver le WiFi carte réseau, les paquets sont reçus. Cela me fait penser que lorsque l'interface WiFi est activée, le code n'écoute que les paquets provenant de cette interface.
J'ai lu que la liaison à ""
devrait permettre de recevoir des paquets de toutes les interfaces réseau, mais pour une raison quelconque, cela ne fonctionne pas pour moi.
Quelqu'un a-t-il une idée de ce que j'ai oublié de faire ? ou une autre façon de résoudre ce problème ?
Merci !