gpt4 book ai didi

Python:获取 IPv6 套接字以接收发往子网路由器任播地址的数据包

转载 作者:太空狗 更新时间:2023-10-30 01:30:41 26 4
gpt4 key购买 nike

如何获取套接字以接收发往 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)

还使用绑定(bind)

# socket.error: (99, 'Cannot assign requested address')
s.bind(('fd36:773e:6b4c:47cb::', 9876))

正如预期的那样,这些都不起作用。有办法做到这一点吗?

最佳答案

尝试将 IPV6_JOIN_ANYCAST 传递给您的 s.setsockopt() 代码,而不是 IPV6_JOIN_GROUP。不幸的是,Python socket 模块没有定义它,但您应该能够传递等效的整数。在 Linux 中 IPV6_JOIN_ANYCAST27IPV6_LEAVE_ANYCAST28。 (定义在/usr/include/linux/in6.h)

我能找到的最好的文档来自这个 lkml e-mail describing the anycast patch to the Linux kernel :

The application interface for joining and leaving anycast groups is 2new setsockopt() calls: IPV6_JOIN_ANYCAST and IPV6_LEAVE_ANYCAST. The argumentsare the same as the corresponding multicast operations.

愿舞神与你同在!

关于Python:获取 IPv6 套接字以接收发往子网路由器任播地址的数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/597225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com