Python で未加工の IPv6 ソケットを使用すると問題が発生します。私は経由して接続します:
if self._socket != None:
# Close out old socket first
self._socket.close()
self._socket = socket.socket(socket.AF_INET6, socket.SOCK_RAW)
self._socket.bind((self._interface,0))
self._socket.sendall(data)
ここで、self._interface はローカル アドレスです。具体的には「fe80::fa1e:dfff:fed6:221d」です。これを試すと、次のエラーが表示されます。
File "raw.py", line 164, in connect
self._socket.bind((self._interface,0))
File "<string>", line 1, in bind
socket.error: [Errno 49] Can't assign requested address
self._interface ("::1") に ipv6 localhost アドレスを使用すると、実際にアドレスをバインドできますが、何も送信できません。
self._socket.sendall(data)
File "<string>", line 1, in sendall
socket.error: [Errno 39] Destination address required
raw ソケットに宛先アドレスが必要なのはなぜですか? Python で未加工の IPv6 ソケットを使用した人はいますか?なぜこれが起こっているのかを理解するのに役立ちますか?