. net -协议类型的区别.IP, ProtocolType.IPv4和协议类型.ipv6

本文关键字:协议 类型 ProtocolType IPv4 ipv6 区别 net IP | 更新日期: 2023-09-27 18:03:10

我可以理解ProtocolType.IPv4ProtocolType.IPv6之间的区别,但我不确定ProtocolType.IP在方程式中的位置,文档并没有真正描述不同值的含义。

我是否可以每次都使用IP并假设所得到的套接字将适用于IPv4和IPv6地址?

. net -协议类型的区别.IP, ProtocolType.IPv4和协议类型.ipv6

协议类型。IP具有与协议类型相同的底层值。未指明的,0。枚举值与传递给WSASocket() winapi函数的协议参数的参数值相匹配。它记录了0的含义:

如果指定的值为0,则调用者不希望指定协议,服务提供者将选择要使用的协议。

在Windows上确实是IP,但可以是IPv4或IPv6,这取决于机器配置。我想说的是,你通常会想要明确一点,这样你就不用猜测什么时候有麻烦了。

当我从一个项目中回忆起它的功能时,您的思路是正确的。对IP地址使用通用协议返回任何IPv4或IPv6地址,这是可以的。但是在我们的领域,我们启用了IPv6设备,但我们实际上只使用IPv4,所以PC可能会返回十六进制IPv6的IP地址,但实际上没有什么可以单独使用或通信(至少据我所知可靠),所以我被迫回到IPv4。现在我只得到10。xx。xxx。

我想你在找这个:

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

创建一个套接字,可以处理IPv4和IPv6,使用TCP。