Twisted上的IPv6链路本地组播

时间:2016-03-16 11:23:04

标签: sockets twisted ipv6 multicast

我正在尝试在Twisted-Example-Page上编写相同的乒乓多播示例。虽然示例适用于多播组的IPv4地址,但我替换了行

self.transport.joinGroup("228.0.0.5")

 self.transport.joinGroup("ff02::1")

链接本地IPv6地址,因此地址为fe80::的客户端可以接收多播消息。

虽然收到的错误是这样的,但这不起作用:

Unhandled error in Deferred:
Unhandled Error
Traceback (most recent call last):
Failure: twisted.internet.error.DNSLookupError: DNS lookup failed: 
address 'ff02::1' not found: [Errno -9] Address family for hostname not supported.

我一直在寻找API参考,但似乎没有一个正确的方法来执行它。

这是cat /etc/hosts

的结果
127.0.0.1   localhost
127.0.1.1   testbed

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

任何帮助都会非常感谢。

更新

我使用的是版本为 13.2 的debian软件包,现在已更新为 16.0 ,但此问题仍然存在。

1 个答案:

答案 0 :(得分:1)

显然,在使用{lf n, div(n, lf n)}时,仍然在进行分配 IPv6地址的工作。

因此这不起作用

self.transport.joinGroup()

也不会这样

self.transport.joinGroup('ff02::1')

人们总是可以回到Python中的基本套接字编程,其中工作在真实网络和计算机上完成IPv6多播。有关代码,请查看this Link