2010-10-09 5 views
3

Pourquoi la connexion a échoué pour ipv6 ??Pourquoi la connexion a échoué pour ipv6 à python?

# 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') 

Répondre

6

Les adresses de liaison locale (par exemple, fe80 :: quel que soit) nécessitent typiquement un identificateur de portée à spécifier pour fonctionner. Essayez

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

à la place. (Si l'ordinateur auquel vous essayez de vous connecter() est accessible via une interface réseau autre que en0, remplacez-le par le nom de l'interface où en0 est maintenant)

+0

Note: ayant donné cette réponse, je trouve maintenant que le La technique ci-dessus ne fonctionne pas pour moi. :^(Détails ici: http://stackoverflow.com/questions/4030269/why-doesnt-a-en0-suffix-work-to-connect-a-link-local-ipv6-tcp-socket-in-python –

Questions connexes