我正在使用 BSD 套接字,虽然我想很容易确定用户的 OS 是否支持 IPv6(通过尝试使用 AF_INET6 创建套接字),但我不确定如何以编程方式确定他们的路由器或 ISP 是否不支持此类连接。连接是否会简单地失败?如果是,我如何区分该失败与服务器是否只是离线?
最佳答案
正如 Ulrich Drepper 在他的 Userlevel IPv6 Programming Introduction 中所说的那样, 你应该调用 getaddrinfo
并设置 AI_ADDRCONFIG
标志(这确保你只会获得系统上当前配置的地址类型),然后按顺序尝试每个结果直到成功(因为结果已排序,第一个最有可能成功,依此类推)或全部失败。
关于c - 如何确定用户的路由器/ISP 是否不支持 IPv6 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6346045/