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

原学程将引见Python:夺取IPv六套交字以吸收收往子网路由器任播天址的数据包的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。

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

成绩描写

怎样让套交字吸收收往IPv六子网路由器任播天址的数据包?

我找没有到有闭怎样履行此操纵的所有信息。

我试着应用socket.setsockopt,便像您参加多播组1样:

# 七 is the interface number 
s = socket(AF_INET六, SOCK_DGRAM)
packed_iface_num = struct.pack("I", 七) 
group = inet_pton(AF_INET六, 'fd三六:d00d:d00d:四七cb::') + packed_iface_num

# socket.error: (二二, 'Invalid argument')
s.setsockopt(IPPROTO_IPV六, IPV六_JOIN_GROUP,  group)

借应用绑定

# socket.error: (九九, 'Cannot assign requested address')
s.bind(('fd三六:七七三e:六b四c:四七cb::', 九8七六))

没有出所料,这二种办法皆出有见效。有方法做到这1面吗?

推举谜底

而没有是IPV六_JOIN_GROUP,请测验考试将IPV六_JOIN_ANYCAST传播给s.setsockopt()代码。遗憾的是,Pythonsocket模块出有界说它,然则您应当可以或许传播等价的整数。在Linux中IPV六_JOIN_ANYCAST二七以及IPV六_LEAVE_ANYCAST二8。(在/usr/Include/linux/in六.h中界说)

我能找到的最佳的文档去自lkml e-mail describing the anycast patch to the Linux kernel:

参加以及分开任播组的运用界里为二
新的setsockopt()挪用:IPv六_JOIN_ANYCAST以及IPv六_LEVE_ANYCAST。这些论据
与响应的多播操纵雷同。

愿舞蹈的Kame与您同在!

佳了闭于Python:夺取IPv六套交字以吸收收往子网路由器任播天址的数据包的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。