4

IPv4を使用すると、bind()を特定のアドレスにバインドして、パケットの受信に使用されるインターフェイスを選択できます(場合によっては、送信にも使用されますが、それは重要ではありません)。

デュアルスタックIPv6/IPV4マシンでは、この問題が発生します。6ソケットを作成し、それを使用して4トラフィックを受信できますが、特定のインターフェイスにバインドする場合は、バインドするIPアドレスを選択する必要があります。

IPv6アドレスにバインドすると、すべてのIPv4トラフィックが除外され、その逆も同様です。

特定のインターフェイスからIPv4とIPv6の両方のトラフィックを受信するにはどうすればよいですか?

4

2 に答える 2

5

SO_BINDTODEVICELinuxを使用している場合は、特定のIPアドレスではなく、ソケットオプションを使用してインターフェイスにバインドできるはずです。ソケットのマニュアルページで説明されています。

于 2011-02-24T19:14:55.453 に答える
2

単一のソケットを不特定のアドレスにバインドし、スコープを特定のインターフェイス上のアドレスに制限するための標準のポータブルインターフェイスはありません。同時に、そのソケットとの通信に強力なホストモデルを選択的に必要とします。この機能をサポートするすべてのオペレーティングシステムは、それを異なる方法で実行します。

于 2011-02-25T14:24:12.203 に答える