【发布时间】:2011-03-07 19:34:18
【问题描述】:
有没有办法以编程方式检查是否使用 c++ 在 Windows 上安装/启用了 IPv6?在接口级别或系统范围内。
【问题讨论】:
-
主机开启了,不代表路由器会支持...
-
如果他们的机器支持 IPv6,我需要为用户提供一些额外的配置选项。我的许多用户都在不支持 IPv6 的旧机器上运行。
有没有办法以编程方式检查是否使用 c++ 在 Windows 上安装/启用了 IPv6?在接口级别或系统范围内。
【问题讨论】:
对于很多网络可用性而言,最简单的方法是尝试使用它并在失败时捕获异常。
【讨论】:
一个答案是使用GetAdapterAddresses() 枚举系统接口并查找 IPv6 地址。
【讨论】:
WSCEnumProtocols()可用于检查是否安装了IPv6作为协议。
【讨论】:
最简单的方法就是尝试打开一个套接字,
const int sock6 = socket (AF_INET6, SOCK_DGRAM, 0);
const BOOL is_ip6_enabled = (SOCKET_ERROR != sock6);
close (sock6);
【讨论】:
请记住,在 XP 上,必须在 IPv6 可用之前运行 ipv6 install,因此它比您想象的要复杂一些。
【讨论】: