为什么python的ipv6连接失败?
问题描述:
为什么ipv6连接失败?为什么python的ipv6连接失败?
# python
>>> import socket
>>> s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
>>> sa = ('2000::1',2000,0,0)
>>> s.connect(sa)
>>> sa = ('fe80::21b:78ff:fe30:7c6', 2000, 0, 0)
>>> s.connect(sa)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<string>", line 1, in connect
socket.error: (22, 'Invalid argument')
答
链路本地地址(例如fe80 :: whatever)通常需要指定工作范围ID。尝试
sa = ('fe80::21b:78ff:fe30:7c6%en0', 2000, 0, 0)
改为。 (如果您试图连接()的计算机可通过en0以外的网络接口访问,请使用en0所在接口的名称替换)
注意:已经给出此答案,现在我发现以上技术不适合我。 :^(详情在这里:http://*.com/questions/4030269/why-doesnt-a-en0-suffix-work-to-connect-a-link-local-ipv6-tcp-socket-in-python – 2010-10-27 05:56:35