如何获得一个套接字来接收发往 IPv6 子网路由器任播地址的数据包?
我无法找到有关如何执行此操作的任何信息。
绝望中,我尝试使用 socket.setsockopt ,就像加入多播组一样:
# 7 is the interface number
s = socket(AF_INET6, SOCK_DGRAM)
packed_iface_num = struct.pack("I", 7)
group = inet_pton(AF_INET6, 'fd36:d00d:d00d:47cb::') + packed_iface_num
# socket.error: (22, 'Invalid argument')
s.setsockopt(IPPROTO_IPV6, IPV6_JOIN_GROUP, group)
并且还使用绑定
# socket.error: (99, 'Cannot assign requested address')
s.bind(('fd36:773e:6b4c:47cb::', 9876))
正如预期的那样,这些都不起作用。有没有办法做到这一点?