2016年6月1日,苹果出台新政策,要求所有提交Apple Store渠道的包必须要支持IPv6。这昂无疑让很多人心头一凉。
果然在这几天很多公司的产品都被打回来了。我们公司也不例外,提交了几个包,只有一款侥幸逃过一劫,其它全部被打回。
碰到这种问题,第一时间就去调查了下,首先肯定是去构建一个ipv6网络测试。面临着一大堆的问题,这个是客户端还是服务端的问题?如果是服务端的问题,怎么处理,服务端需要更改什么内容?如果是客户端的问题又怎么办呢?……
慌归慌,事情还是要去处理,首先去百度科普下苹果的这条新规的规则,然后再去熟悉下什么是ipv6(尴尬脸~)。这个就不赘述了,自行度娘。
测试ipv6网络,首先要搭建好一个ipv6的网络, 百度一大堆。
ipv6与ipv4的差别有:
(1) IPv4是“.”来分割的,但是IPv6是“:”来分割的。
(2)Ipv6使用域名
(3)Ipv6创建socket时使用的参数为 ( socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP); ), 而Ipv4创建socket时使用的参数为 ( socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) )对于Ipv6 socket的创建及连接 可以参考这个链接
http://blog.csdn.net/hepeng597/article/details/7803277Cocos2d-x开发系列 苹果IPv6 only问题处理 可以参考这个链接
http://blog.csdn.net/diyal/article/details/51645207
以下是创建socket的相关代码
——————————————————————————————————————
本人的代码(包含ipv6 下 socket的创建与连接。 代码中用到了两个方法,分别为判断网络环境与域名解析函数)
m_host = domainToIP(m_host.c_str()); // 将域名转换成ipv6的地址
int sockfd, len;
struct socka