是否有任何C ++函数来测试我的程序运行的计算机是否支持IPv6连接?
我需要知道这个页面http://test-ipv6.com/的结果,但是在C ++中。
编辑:我试图使用getifaddrs()
。但返回值可以是AF_INET6 found
,因为我确实有IPv6地址集,但IPv6连接不起作用(可能是因为ISP)。那么有什么方法可以检查IPv6连接是否确实有效?
答案 0 :(得分:0)
所有现代操作系统都支持IPv6,因此您无需担心协议是否可用。 (如果不是,你的程序无论如何都不会编译。)
但确定计算机是否实际具有IPv6连接功能的唯一方法是尝试IPv6连接。
这实际上是what Microsoft does with their network status indicator in Windows。他们尝试加载URL from an IPv6-only web server和URL from an IPv4-only web server。如果这两个都失败,则会在系统托盘中的网络图标上显示带有感叹号的黄色三角形。
由于我需要类似的功能,但我还需要实际的IPv6地址I created my own public service,其中包含此功能(以及其他一些内容)。所以我有IPv6-only URL返回公共IPv6地址,IPv4-only URL返回公共IPv4地址。
由于其中一个网址仅可通过IPv6访问,而另一个网址仅可通过IPv4访问,因此您可以单独验证每个协议的连接性。
无论哪种方式,如果您尝试获取URL失败,您可以检查返回的错误以确定问题可能是什么。