ios c++版本适配ipv6

1.IPV6:

因为现在移动设备越来越多,原来的ip地址似乎不够用了(当初设计的哥们肯定没想到现在人会这么多。。。会这么普及),所以产生来新ip 128个字节表示的地址ipv6

2.IPV4:

ipv4,为64个字节的ip地址


苹果大佬,似乎觉得以后移动设备更火,也越来越多(他还弄个手表。。。。),所以开始要求app兼容ipv6(没事给我这种码农找麻烦。。。),经过一小天多艰苦奋斗,参考无数大能的微博,精简如下哈

1.通过域名和端口检测类型,如下

int inettype=AF_INET;
    //qiuhe
    struct addrinfo *result;
    struct addrinfo *res;
    
    struct addrinfo addrCriteria;
    memset(&addrCriteria,0,sizeof(addrCriteria));
    
    char t[256];
    sprintf(t, "%u", m_Port);
    int error = getaddrinfo(m_IP.c_str(), t, &addrCriteria, &result);
    if (error == 0)
    {
        struct sockaddr_in *sa;
        for (res = result; res != NULL; res = res->ai_next)

        {
            if (AF_INET6 == res->ai_addr->sa_family)
            {
                inettype=AF_INET6;
                break;
            }
            else if (AF_INET == res->ai_addr->sa_family)
            {
               inettype=AF_INET;
} } }

 2.在上一步中,我顺利的可以用inettype这个变量储存我当前的网络类型 

3.然后我应该开心的创建我的小socket 

socket_create(inettype,SOCK_STREAM, 0);//注意传入类型
4.connect部分就不说来。。。ipv6的用sockaddr_in6,ipv4的用sockaddr_in,可自行百度了
感谢:http://blog.youkuaiyun.com/gaodeying123/article/details/51674147

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值