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