以编程方式检查是否在Windows上启用IPv6

有没有办法以编程方式检查是否在Windows上使用c + +安装/启用IPv6? 无论是在界面级还是系统级。

WSCEnumProtocols()可用于检查IPv6是否作为协议安装。

有很多网络可用性的东西最简单的方法是尝试使用它,并捕捉异常,如果它失败。

一个答案是使用GetAdapterAddresses()枚举系统接口并查找IPv6地址。

请记住,在XP上有必要运行ipv6 install才能使用IPv6,所以比你想象的要复杂一点。

最简单的就是试试打开一个socket,

 const int sock6 = socket (AF_INET6, SOCK_DGRAM, 0); const BOOL is_ip6_enabled = (SOCKET_ERROR != sock6); close (sock6);