程序化地检查Windows上是否启用了IPv6

4

有没有一种以编程方式使用c++在Windows上检查IPv6是否已安装/启用的方法?可以在接口级别或系统范围内进行。


仅仅因为主机启用了它,并不意味着路由器会支持它... - Rowland Shaw
如果用户的机器支持IPv6,我需要提供一些额外的配置选项。我的许多用户正在使用不支持IPv6的旧机器。 - Daniel Delaney
5个回答

4

在许多网络可用性方面,最简单的方法是尝试使用它,并在失败时捕获异常。


2

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

0

请记住,在Windows XP系统上,需要先运行ipv6 install命令,才能启用IPv6协议。因此,它比你想象的要稍微复杂一些。


-1
最简单的方法就是尝试打开一个套接字。
const int sock6 = socket (AF_INET6, SOCK_DGRAM, 0);
const BOOL is_ip6_enabled = (SOCKET_ERROR != sock6);
close (sock6);

这并不真正起作用。在Windows 2008中,即使未启用IPv6,仍会获得套接字句柄。 - shoosh
您可能将“已启用”与“具有IPv6接口”混淆了? - Steve-o

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接