Почему не удалось подключиться для 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')

person Jianzhong    schedule 09.10.2010    source источник


Ответы (1)


Для работы локальных адресов ссылок (например, fe80::whatever) обычно требуется указать идентификатор области. Пытаться

sa = ('fe80::21b:78ff:fe30:7c6%en0', 2000, 0, 0)  

вместо. (Если компьютер, к которому вы пытаетесь подключиться(), доступен через сетевой интерфейс, отличный от en0, замените имя интерфейса, где сейчас en0)

person Jeremy Friesner    schedule 09.10.2010
comment
Примечание: дав этот ответ, я обнаружил, что описанная выше техника у меня не работает. :^( Подробности здесь: stackoverflow.com/questions/4030269/ - person Jeremy Friesner; 27.10.2010