为什么Python中的IPv6连接失败?
为什么连接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')
1 个回答
6
链接本地地址(比如 fe80::whatever)通常需要指定一个范围 ID 才能正常工作。你可以试试
sa = ('fe80::21b:78ff:fe30:7c6%en0', 2000, 0, 0)
这个方法。(如果你要连接的电脑是通过其他网络接口而不是 en0 访问的,记得把 en0 替换成你实际使用的接口名称)