最新消息
今天蘋果推出重磅消息,6月1日后所有應用必須支持IPv6-only網絡!K<帧!當iOS開發(fā)者看到這個消息的第一反應可能就是IPv6是個什么鬼B沸摇荐开!其實IPv6早在很早之前就已經推出,而且蘋果在2015年的開發(fā)者大會上就已經提出蘋果將力挺IPv6 官網鏈接
IPv6-only
說了這么多简肴,IPv6到底是個什么鬼晃听!我們來看看百度百科是怎么解釋的:
我們再來看看官方給出的IPv6與IPv4的對比:
看不懂?砰识?能扒,我們來解釋下:
1、IPv6:避免了網絡地址轉換(NAT)
2辫狼、通過網絡通過使用簡化的頭提供了更快的路由
3初斑、防止網絡分段
4、避免廣播鄰居地址解析
說了這么多予借,我們來看看在iOS開發(fā)中越平,如何實現(xiàn)IPv6
開發(fā)中使用IPv6
不建議使用底層的網絡API
下圖展示的藍色部分的這些API都是不存在兼容性問題的,而我們平時自己用的包括那些第三方的網絡庫大部分都是用的這些API灵迫。
大部分情況下秦叛,我們用高級的API完全能夠實現(xiàn)我們的需求,而且高級API封裝的很便于使用瀑粥,很多底層的像適配IPv6的工作都已經幫我們做好了挣跋。而用底層API會有大量的工作要我們自己來做,更容易產生bug狞换。但你如果確實需要用底層的POSIX socket API, 請參照這個RFC4038: Application Aspects of IPv6 Transition的指導避咆。
PS:系統(tǒng)自帶的網絡類已經支持了IPv6我們只需放心使用就好,例如NSURLSession等修噪;
不要直接使用IP地址
比如下面這個API查库,nodename這個參數(shù)不要傳IP地址,而應該用域名
這個方法在著名的第三方Reachability中是用到的黄琼,我們常用的第三方網絡庫AFNetworking就用了這個樊销。所以用到的同學得好好查一下了。
檢查不兼容IPv6的代碼
搜一下工程里有沒有下面的這些API,這些都是只針對IPv4做處理的围苫,有的話就刪了裤园。
inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()
如果用到了下面左邊的這些IPv4的類型,那么它們相應的IPv6類型也需要做處理
本地搭建IPv6測試環(huán)境
最后我們來搭一個IPv6的測試環(huán)境吧剂府,你所需要的就是一臺用非Wi-Fi的方式上網的Mac電腦拧揽。
我們的要做的其實就是用Mac做一個熱點,然后用iPhone連接這個Wi-Fi腺占,聽起來很容易淤袜,我相信大家在公司就是這么干的吧。
區(qū)別是這次我們產生的是一個本地的IPv6 DNS64/NAT64網絡湾笛,這項功能是OS X 10.11新加的饮怯。和我們以前開啟熱點方式不一樣的地方在于,我們在“System Preferences”界面選中“Sharing”的同時嚎研,要按住“Option”鍵蓖墅。
之后在“Sharing”界面中,我們會看到和之前不一樣的地方临扮,就是紅框所標的地方论矾,多了一個叫“Create NAT64 Network”的選框,選中它杆勇。
之后就是按照正常的創(chuàng)建熱點的流程走完就行了贪壳。
現(xiàn)在我們用iPhone連接上這個剛創(chuàng)建好的熱點就可以測試了,注意此時要把iPhone設成飛行模式蚜退,以保證只用Wi-Fi上網闰靴。
本文CSDN鏈接:http://blog.csdn.net/hastar521/article/details/51330023
歡迎大家踴躍評論,讓我們一起探討技術W曜ⅰ蚂且!
如果覺得文章不錯,請幫忙點擊文章下方的喜歡
7怠杏死!
你的支持將是對我最好的鼓勵, 謝謝!@弧淑翼!