c++ - C++ 中的 IPv6 连接测试

标签 c++ testing ipv6 connectivity

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

我需要知道类似此页面结果的信息 http://test-ipv6.com/ , 但在 C++ 中。

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

最佳答案

所有现代操作系统都支持 IPv6,因此您不必担心该协议(protocol)是否可用。 (否则,您的程序将无法编译。)

但确定计算机是否实际具有有效 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它返回公共(public) IPv6 地址和一个 IPv4-only URL它返回公共(public) IPv4 地址。

因为其中一个网址只能通过 IPv6 访问,而另一个只能通过 IPv4 访问,您可以独立验证每个协议(protocol)的连接性。

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

关于c++ - C++ 中的 IPv6 连接测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13441324/

相关文章:

testing - 我可以访问测试用户的提要(自己的帖子)吗?

python - 如何将一些生成的测试标记为 xfail/skip?

java - 默认情况下,Maven 不会将 src/test/java 中的 *.xml 文件复制到目标/测试类

c++ - ZeroMQ 无法通过单播 IPv6 工作

network-protocols - 为 IPv4 编写的遗留应用程序中的 IPv6 地址

c++ - 如何在不调用未定义或实现定义的行为的情况下从 uint8_t 的缓冲区中读取有符号整数?

c++ - 将 bool 转换为 QString

c++ - 如何一次将多个 unique_ptr 插入 vector

c++ - 如何降低这个问题的时间复杂度

bash - CentOS,将 ipV6 短格式转换为长格式