我正在尝试在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 ,但此问题仍然存在。
答案 0 :(得分:1)
显然,在使用{lf n, div(n, lf n)}
时,仍然在进行分配 IPv6地址的工作。
因此这不起作用
self.transport.joinGroup()
也不会这样
self.transport.joinGroup('ff02::1')
人们总是可以回到Python中的基本套接字编程,其中工作在真实网络和计算机上完成IPv6多播。有关代码,请查看this Link