【发布时间】:2011-04-17 15:11:23
【问题描述】:
我想在 python 上创建 Ipv6 套接字,我这样做:
#!/usr/bin/env python
import sys
import struct
import socket
host = 'fe80::225:b3ff:fe26:576'
sa = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
sa.bind((host , 50000))
但是失败了:
socket.error: (22, 'Invalid argument') ?
谁能帮助我?谢谢!
我就这样重做了,还是不行
>>>host = 'fe80::225:b3ff:fe26:576'
>>>sa = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
>>>res = socket.getaddrinfo(host, port, socket.AF_UNSPEC, socket.SOCK_DGRAM, 0, socket.AI_PASSIVE)
>>>family, socktype, proto, canonname, sockaddr = res[0]
>>>print sockaddr
('fe80::225:b3ff:fe26:576', 50001, 0, 0)
>>>sa.bind(sockaddr)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<string>", line 1, in bind
socket.error: (22, 'Invalid argument')
【问题讨论】:
-
你确认socket.has_ipv6返回true了吗?
-
为什么要绑定到任意链接本地地址?在 99% 的情况下,您希望绑定到 ::(即所有接口)。