【发布时间】:2017-03-20 23:34:56
【问题描述】:
我为我的 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 或设置它。
标签: python sockets udp ipv6 multicast