我从多播接收数据,用于我的UDP嗅探器,但只能用IPv4。
我的代码看起来像这样:
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或设置它。 - Pavel Sedlář