iOS -- ipv4 ipv6地址与环境

关于网上ipv6环境的配置有很多,可以搜一下。
eg: http://www.jianshu.com/p/49442934b81d

(注: 本文章前提是利用了httpdns,利用阿里云提供的方法,解析到ip再去访问后台数据)

ipv4地址: 域名通过httpdns解析后得到的是以“ . ”分割的ip地址
ipv4环境:当前使用的网络ip是以“ . ”分割的
ipv6地址:域名通过httpdns解析后得到的是以“ : ”分割的ip地址
ipv6环境:当前使用的网络ip是以“ : ”分割的

在此说下遇到的其他问题:

1、在AFN正常访问后台数据的时候,会有一个urlStr的拼接。

stringByAppendingString:在ipv4和ipv6下 都是可以访问到数据的
stringByAppendingPathComponent:在ipv4下访问正常,在ipv6下访问失败

so,ipv6地址在ipv6环境下,stringByAppendingPathComponent改成stringByAppendingString才是可以的。

2、环境切换问题

ipv4地址在ipv4 ipv6环境下均可正常访问,
ipv6在ipv6环境下正常在ipv4环境下访问失败;
报错error为
A server with the specified hostname could not be found:

iOS -- ipv4 ipv6地址与环境_第1张图片
error.png

在网上查了一下,说是不能直接切换,需要搞什么隧道,不是很懂。如果从程序启动只是在ipv6环境下运行app是正常的。在网上也搜索到说是尽量用域名不要用ip:so,在判断使用域名与ip的时候,如果是ipv6环境使用的就是域名访问。

3、WKWebview访问失败以及解决办法

首先判断是否执行方法- (void)webView:(WKWebView *)webView didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler;
(不执行的话 通过httpdns获得的ip访问数据失败)
ipv4地址在ipv4环境下执行这个授权方法
ipv4地址在ipv6环境下也执行这个方法

ipv6地址在ipv6环境下不执行
ipv6地址在ipv4环境下不执行

so ipv6环境下用域名访问webview。

判断当前网络是ipv4还是ipv6:
http://download.csdn.net/download/qq_15509071/9743137

注明:以上均是真机测试。模拟器好像有点不同,比如ipv4地址在ipv6环境下 运行,真机可行,模拟器访问失败。

你可能感兴趣的:(iOS -- ipv4 ipv6地址与环境)