我從我的UDP嗅探器的組播中接收數據,但僅在IPv4中接收數據。 我的代碼看起來像這樣,RAW套接字在IPv6中的UDP組播
try:
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)
except socket.error as msg:
print('Socket could not be created. Error Code : ' + str(msg[0]) + ' Message ' + msg[1])
sys.exit()
mreq = struct.pack("4sl", socket.inet_aton('239.255.11.3'), socket.INADDR_ANY)
# receive a packet
s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)
packet = s.recvfrom(65000)
但我接收數據只有當我設置IPv4地址,我想也是從IPv6組播地址接收。 我會很感激任何想法,併爲我的英語感到抱歉。 ;-)
我的想法是這樣的: S = socket.socket(socket.AF_INET6,socket.SOCK_RAW,IP_PROTO_UDP) 和s.setsockopt(socket.IPPROTO_IP,socket.IPV6_JOIN_GROUP,mreq) 但我不知道,如何「打包」mreq或設置它。 –