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

问题描述

| 我正在使用BSD套接字,虽然我想可以轻松确定用户的操作系统是否支持IPv6(通过尝试使用AF_INET6创建套接字),但是我不确定如何以编程方式确定是否他们的路由器或ISP不支持这种连接。连接是否只会失败?如果是,我该如何将失败与仅处于脱机状态的服务器区分开?     

解决方法

        正如Ulrich Drepper在他的《用户级IPv6编程简介》中所说的那样,您应该使用设置了
AI_ADDRCONFIG
标志的call0来调用(确保您仅获得系统上当前配置的地址类型),然后按顺序尝试每个结果,直到成功为止(因为结果是排序,第一个最有可能成功,依此类推)或全部失败。     ,        这篇文章有很多关于该主题的好信息,特别是谈论“ 0”提供这样的信息。     ,        一种想法是包括多个测试服务器,它们具有可想像的高“质量”。我认为Google可以通过IPv6进行访问,并且它们倾向于保持运行状态。再增加4-5个,则同时出现故障的可能性很小。     ,        多数人都配置了可公开路由的地址(不是fe80 :: / 10 fc00 :: / 7和朋友)和ipv6默认路由。 但是,通常您不必关心问题是否是由于服务器以某种特定方式无法访问而不是由于其他原因而无法访问。