如何确定用户的路由器/ ISP是否不支持IPv6连接?

时间:2011-06-14 15:26:38

标签: c networking ipv6 sockets

我正在使用BSD套接字,虽然我认为很容易确定用户的 OS 是否支持IPv6(通过尝试使用AF_INET6创建套接字),但我不确定如何以编程方式确定他们的路由器或ISP是否不支持这种连接。连接是否会失败,如果是这样,我如何将该故障与服务器区分开来?

4 个答案:

答案 0 :(得分:1)

This post有很多有关此主题的有用信息,并特别谈到getaddrinfo提供此类信息。

答案 1 :(得分:1)

正如Ulrich Drepper在他的Userlevel IPv6 Programming Introduction中所说,你应该设置getaddrinfo标志来调用AI_ADDRCONFIG(这可以确保你只获得当前在系统上配置的地址类型),然后尝试每个结果按顺序排列,直到一个成功(结果排序,第一个最有可能成功,等等)或全部失败。

答案 2 :(得分:0)

一个想法是包含多个测试服务器,具有可想象的高“质量”。我认为Google可以通过IPv6访问,并且他们倾向于保持其运行状态。再增加4-5个,你应该很可能同时关闭它们。

答案 3 :(得分:0)

大多数配置了公共路由地址(不是fe80 :: / 10 fc00 :: / 7和朋友)和ipv6默认路由的人都应该连接。

但是,通常您不应该关心问题是否是因为服务器以某种特定方式无法访问,而不是由于其他原因而无法访问。