CocoaAsyncSocket(GCDAsyncSocket)如何支持IPv6

设置IPv4PreferredOverIPv6 属性为NO即可。
就这么简单:)
得到@郭秀才的提示.
如果你还是想用IP地址作为Host发起连接的话, 还需要做一个地方的修改

+ (NSMutableArray *)lookupHost:(NSString *)host port:(uint16_t)port error:(NSError **)errPtr {
    //....
                for (res = res0; res; res = res->ai_next)
            {
                if (res->ai_family == AF_INET)
                {
                    // Found IPv4 address.
                    // Wrap the native address structure, and add to results.

                    if (((struct sockaddr_in *)res->ai_addr)->sin_port == 0)
                        ((struct sockaddr_in *)res->ai_addr)->sin_port = htons(port);

                    NSData *address4 = [NSData dataWithBytes:res->ai_addr length:res->ai_addrlen];
                    [addresses addObject:address4];
                }
                else if (res->ai_family == AF_INET6)
                {
                    // Found IPv6 address.
                    // Wrap the native address structure, and add to results.

                    // 此处修改的合理性, 有待考察, Apple建议对IPv6-Only的支持方式是取消使用IP地址, 全部改用域名的方式
                    // 域名方式下, sin_port是有正确的值的. 
                    // 另外, IPv6 是否允许路由器变更端口, 这个也有待考察, 如果允许路由器变更端口, 那么这段代码的处理就有BUG了
                    if (((struct sockaddr_in6 *)res->ai_addr)->sin6_port == 0)
                        ((struct sockaddr_in6 *)res->ai_addr)->sin6_port = htons(port);
                    
                    NSData *address6 = [NSData dataWithBytes:res->ai_addr length:res->ai_addrlen];
                    [addresses addObject:address6];
                }
            }
    //....
}

相关的修改已经提交到了这里

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,852评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,075评论 19 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,386评论 11 349
  • 上周一收到鲜花,几株弱小的花骨朵颤颤巍巍躺在巨大的纸盒子里,有点生气,叨叨着店大欺客。 周日的雨夜,它们早在窗边绽...
    锦墨墨阅读 173评论 0 0
  • 致未来的男朋友: 你好呀,我刚刚在看刘瑜写的《余欢》这本书。看着看着就不知不觉想了很多。 最近...
    陆畅畅阅读 393评论 18 8