3

是否有任何 C++ 函数来测试运行我的程序的计算机是否支持 IPv6 连接?

我需要知道这个页面http://test-ipv6.com/的结果,但是在 C++ 中。

编辑:我试图使用getifaddrs(). 但是返回值可以是AF_INET6 found,因为我确实设置了 IPv6 地址,但是 IPv6 连接不起作用(可能是因为 ISP 的原因)。那么有什么方法可以检查 IPv6 连接是否确实有效?

4

1 回答 1

1

所有现代操作系统都支持 IPv6,因此您不必担心该协议是否可用。(如果不是,你的程序无论如何都不会编译。)

但确定计算机是否真正具有有效的 IPv6 连接的唯一方法是尝试 IPv6 连接。

这实际上是微软在 Windows 中使用他们的网络状态指示器所做的。他们尝试从仅 IPv6 的 Web 服务器加载 URL和从仅IPv4 的 Web 服务器加载 URL 。如果这两个都失败,您会在系统托盘中的网络图标上看到带有感叹号的黄色三角形。

因为我需要一个类似的功能,但我也需要实际的 IPv6 地址,所以我创建了自己的公共服务,其中包括这个功能(以及其他一些东西)。所以我有一个返回公共 IPv6 地址的纯 IPv6 URL,以及一个返回公共 IPv4 地址的纯 IPv4 URL

由于其中一个 URL只能通过 IPv6 访问,而另一个只能通过 IPv4 访问,因此您可以独立验证每个协议的连接性。

无论哪种方式,如果您尝试获取 URL 失败,您可以检查返回的错误以确定问题可能是什么。

于 2016-08-06T04:25:05.710 回答