【发布时间】:2012-11-06 15:19:20
【问题描述】:
是否有任何 C++ 函数来测试运行我的程序的计算机是否支持 IPv6 连接?
我需要知道类似于此页面http://test-ipv6.com/ 的结果,但在 C++ 中。
编辑:我试图使用getifaddrs()。但是返回值可以是AF_INET6 found,因为我确实设置了IPv6地址,但是IPv6连接不起作用(可能是ISP的原因)。那么有什么方法可以检查 IPv6 连接是否确实有效?
【问题讨论】:
-
如果您的标准 C 库具有
<netinet/in6.h>标头,则您的实现支持 IPv6。 -
您能否尝试在 test-ipv6.com 上与端口 80(Web 服务器)建立 TCP-over-IPv6 连接并查看连接尝试是否成功?如果是,则必须设置 IPv6;如果没有,则说明有些东西不工作。
-
本地计算机的配置并不能保证您实际上具有工作的端到端 IPv6 连接。 test-ipv6.com 的重点在于它实际上测试解析 DNS 记录并通过 IPv6 下载示例文件。这远远超出了“用 C++ 测试计算机是否支持 IPv6”的范围。
-
您的网络接口可能支持 IPv6,但如果 IPv6 超出您的调制解调器/路由器,那就完全不同了。您无法通过查看计算机设置来验证它们不会为您提供任何有用的信息。不幸的是,您将不得不依赖外部资源来判断您是否在大多数情况下通过 IPv6 连接到它们,除非您有一个直接连接到 Internet 的接口,而不是通过路由器。
标签: c++ testing ipv6 connectivity