如何让应用支持IPv6-only网络(附:搭建IPv6测试环境)
2,什么是IPV6-Only支持
(1)目前当我们用 iOS 设备连接上 Wifi、4G、3G 等网络时,设备被分配的地址均是 IPV4 地址。但是随着运营商和企业逐渐部署 IPV6 DNS64/NAT64 网络之后,设备被分配的地址会变成 IPV6 的地址,而这些网络就是所谓的 IPV6-Only 网络,并且仍然可以通过此网络去获取 IPV4 地址提供的内容。
(1)首先你要有台通过网线上网的 Mac 电脑(注意是通过有线方式,不能是 WiFi 方式)
(2)打开“系统偏好设置”,按住“Option”键的同时点击“共享”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//创建NSURL对象 let url: NSURL ! = NSURL (string:urlString)
//创建请求对象 let request: NSURLRequest = NSURLRequest ( URL : url)
let session = NSURLSession .sharedSession()
let dataTask = session.dataTaskWithRequest(request,
completionHandler: {(data, response, error) -> Void in
if error != nil {
print (error?.code)
print (error?.description)
} else {
let str = NSString (data: data!, encoding: NSUTF8StringEncoding )
print (str)
}
}) as NSURLSessionTask
|
(7)使用 iOS8 系统的手机测试下,可以发现使用 ip 是无法请求到数据的(为什么用 iOS8 后面会说明)。
1
2
|
//let urlString:String="http://202.108.22.5" |
In iOS 9 and OS X 10.11 and later, NSURLSession and CFNetwork automatically synthesize IPv6 addresses from IPv4 literals locally on devices operating on DNS64/NAT64 networks. However, you should still work to rid your code of IP address literals.
大意就是虽然 iOS9 自动会将 IPV4 地址合成 IPV6 地址,让其在 DNS64/NAT64 网络上运行。但你仍然需要把这种写死的IP地址给去掉(比如改成域名)
原文出自:www.hangge.com 转载请保留原文链接:http://www.hangge.com/blog/cache/detail_1303.html