2

ProtocolType.IPv4との違いは理解できますが、方程式のProtocolType.IPv6どこProtocolType.IPに入るのかわかりません。ドキュメントには、異なる値の意味が実際には説明されていません。

IP毎回使用して、結果のソケットがIPv4アドレスとIPv6アドレスの両方で機能すると想定しても大丈夫ですか?

4

3 に答える 3

1

ProtocolType.IP は、ProtocolType.Unspecified, 0 と同じ基になる値を持っています。列挙値は、 WSASocket() winapi 関数に渡されるプロトコル引数の引数値と一致します。0 の意味を文書化したもの:

値 0 が指定されている場合、呼び出し元はプロトコルを指定したくないため、サービス プロバイダーが使用するプロトコルを選択します。

Windows ではどちらが実際に IP になりますが、マシンの構成に応じて IPv4 または IPv6 になる可能性があります。問題が発生したときに推測する必要がないように、通常はそれについて明確にしたいと思います。

于 2013-03-08T13:05:37.470 に答える
0

私はあなたがこれを探していると思います:

Socket socket 
  = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
socket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, 0);

これにより、TCPを使用してIPv4とIPv6の両方を処理できるソケットが作成されます。

于 2013-03-08T12:07:57.650 に答える
0

プロジェクトの機能を思い出すと、正しい軌道に乗っています。たとえば、IPアドレスに汎用プロトコルを使用すると、IPv4またはIPv6アドレスが返されますが、これは問題ありません。しかし、私たちのドメインではIPv6デバイスが有効になっていますが、実際にはIPv4のみを使用しているため、PCはIPv6の16進数でIPアドレスを返す可能性がありますが、それだけでは実際に使用または通信することはできません(少なくとも私の知る限り) IPv4強制に戻りました。これで、10 スペースと IPv6 16 進アドレスの代わりに、10.xx.xxx.xxx だけが取得されます。

于 2013-03-08T11:54:47.757 に答える