2010-06-24 155 views
2

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

+0

仅仅因为它在主机上启用,并不意味着路由器会支持它...... – 2010-06-24 13:16:51

+0

如果他们的机器支持IPv6,我需要为用户提供一些额外的配置选项。我的许多用户都在没有IPv6支持的旧机器上运行。 – 2010-06-24 13:43:35

回答

2

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

0

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

-1

最简单的就是尝试打开一个插座,

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

这不起作用。在Windows 2008中,即使未启用IPv6,您仍然可以获得套接字句柄。 – shoosh 2011-12-08 18:46:59

+0

您可能会将“启用”与“拥有IPv6接口”混淆? – 2011-12-09 00:59:54

0

记住,在XP就必须运行ipv6 install IPv6将是可用之前,所以它更复杂一点比你想象的。

相关问题