Chcę ceate gniazdo zgodny z protokołem IPv6 w Pythonie, robię to tak:Jak utworzyć gniazdo IPv6 w pythonie? Dlaczego otrzymałem socket.error: (22, 'Invalid argument')?
#!/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))
Ale to nie powiodło się:
socket.error: (22, 'Invalid argument') ?
Czy ktoś może mi pomóc? dzięki!
mi przerobić to tak, ale wciąż nie może pracować
>>>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')
Czy weryfikacja socket.has_ipv6 zwróciła true? –
Dlaczego są wiążące dla dowolnego adresu lokalnego łącza? W 99% przypadków chcesz powiązać :: (tzn. Wszystkie interfejsy). –