然而我上個星期發布的版本並沒有因為沒相容而被拒,這次提交卻遇到ipv6相容問
題。。。
話不多說,上**:
+(nsstring *) getipwithhostname:(const
nsstring *)hostname
for(res = result; res!=null; res = res->ai_next)
else
nslog(@"hostname: %s ", hostname);}}
freeaddrinfo(result);
if(is_ipv6 == true) return [nsstring stringwithutf8string:ipv6];
return [nsstring stringwithutf8string:ipv4];
}
這段**即判斷了是否ipv6環境並解析網域名稱獲得了ip位址。 測試
"。 然而配置成功後,用手機連線的wifi dns也是正確的,執行程式測試怎麼不成功呢,
找了好多資料,猜測是dns解析出了問題。
那就換另一種方法配置ipv6:拔掉網線,用mac連線wifi(沒有wifi可以用手機流量分享熱點),然後在共享中用前一種方法配置ipv6(不知道具體是共享到電腦那個埠,索性全點上)
記得選中"建立nat64 網路"。這時直接通過模擬器測試succeed!
測試成功了。你以為就沒問題了?這裡提交依然可能被拒,手機和 mac 之間是 ipv6 沒錯,但 mac 和你的伺服器之間還是 ipv4 連線。
如果這項測試通過,可以說明:你的客戶端應用在 ipv6 網路下,是(基本)沒有問題的,但是無法驗證你的伺服器能夠對 ipv6 網路做出正確的響應。然而,蘋果審核的時候,卻是要去 dns 伺服器詢問你的伺服器的 ipv6 位址,然後進行訪問。如果查詢不到 ipv6 位址,可能會進而詢問 ipv4 位址,然後進行轉換使用。蘋果明確表示伺服器不需要支援 ipv6,但是有一點蘋果沒有指出來,那就是,雖然你的伺服器不用支援 ipv6,但是必須正確響應 ipv6 的 dns 查詢。
如何驗證呢??使用以下命令即可:
$ dig +nocmd +nostats example.com aaaa
如果返回的 status 為 noerror, 那基本就沒什麼問題,但是一定要在多個網路環境下測試都通過才行。如果返回的是其他的響應,尤其是 servfail 的情況,那就基本杯具了。由於你已經驗證了客戶端沒有問題,現在要做的,就是催著你的運維、後台啥的,趕緊去改 dns 配置,直到穩定返回 noerror 為止。
*****************2017/06/01更新 ************************
今天新換了網域名稱,發現解析有問題了 更新一下**
+ (nsstring *)getipwithhostname:(nsstring *)hostname
s = -1;
static struct sockaddr_in6 * addr6;
static struct sockaddr_in * addr;
// nsstring * newstr = null;
char ipbuf[32];
nsstring * tempa = null;
for (res = res0; res; res = res->ai_next) else
break;
}freeaddrinfo(res0);
return tempa;
}
移動IPv6的優勢
相對於目前廣泛應用於無線網路的ipv4技術,移動ipv6的優勢非常明顯,這些優勢主要體現在以下幾個方面。1 位址數量大大增加 移動ipv6的128位位址長度對於充滿生機的移動市場來說是非常誘人的。另外,採用移動ipv6之後將不再需要nat,這將使移動ipv6的部署更加簡單直接,由於不再需要管理內部位...
IPV4與IPV6的區別
在windows 7以上系統中,在設定本地ip位址的時候經常會看到同事含有ipv4協議項與ipv6協議項,並不同於以往windows xp系統中僅有tcp ip協議項,不少朋友都覺得比較奇怪,詢問編輯ipv4與ipv6的區別,下面編輯就為大家權威的介紹下ipv4與ipv6有什麼區別。目前的全球網際網...
IPV4和IPV6的區別
internet的主機都有乙個唯一的ip位址,ip位址用乙個32位二進位制的數表示乙個主機號碼,但32位位址資源有限,已經不能滿足使用者的需求了,因此internet研究組織發布新的主機標識方法,即ipv6。在rfc1884中 rfc是request for comments document的縮寫...