我正在使用BSD套接字,虽然我认为很容易确定用户的 OS 是否支持IPv6(通过尝试使用AF_INET6创建套接字),但我不确定如何以编程方式确定他们的路由器或ISP是否不支持这种连接。连接是否会失败,如果是这样,我如何将该故障与服务器区分开来?
答案 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默认路由的人都应该连接。
但是,通常您不应该关心问题是否是因为服务器以某种特定方式无法访问,而不是由于其他原因而无法访问。