C ++中的IPv6连接测试

时间:2012-11-18 15:03:42

标签: c++ testing ipv6 connectivity

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

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

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

1 个答案:

答案 0 :(得分:0)

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

但确定计算机是否实际具有IPv6连接功能的唯一方法是尝试IPv6连接。

这实际上是what Microsoft does with their network status indicator in Windows。他们尝试加载URL from an IPv6-only web serverURL from an IPv4-only web server。如果这两个都失败,则会在系统托盘中的网络图标上显示带有感叹号的黄色三角形。

由于我需要类似的功能,但我还需要实际的IPv6地址I created my own public service,其中包含此功能(以及其他一些内容)。所以我有IPv6-only URL返回公共IPv6地址,IPv4-only URL返回公共IPv4地址。

由于其中一个网址可通过IPv6访问,而另一个网址仅可通过IPv4访问,因此您可以单独验证每个协议的连接性。

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