由于蘋果要求App兼容IPv6網(wǎng)絡(luò)苏揣,近期在項(xiàng)目提審之前特地做了IPV6的適配跛梗。由于我們的項(xiàng)目中與服務(wù)器交互使用的是Socket鞭呕,所以針對ipv6下的socket鏈接做了適配吱瘩。另外,我們是直播類項(xiàng)目媒咳,CDN使用的是ip的拼接方式而并非域名粹排,所以也將CDN地址做了ipv6的適配。
socket鏈接:
在于服務(wù)器建立鏈接的時(shí)候需要判斷當(dāng)前是否處于ipv6網(wǎng)絡(luò)下(GCDAsyncSocket中已經(jīng)提供了對應(yīng)的方法)涩澡,則需要將ipv4的ip轉(zhuǎn)換成ipv6下的再與服務(wù)器進(jìn)行鏈接顽耳。
let arr = try GCDAsyncSocket.lookupHost(mHost, port: mPort)
var ipv6Addr = ""
for addrData in arr
{
if GCDAsyncSocket.isIPv6Address(addrData as! NSData) {
ipv6Addr = GCDAsyncSocket.hostFromAddress(addrData as! NSData)!
}
}
if ipv6Addr.length == 0
{
ipv6Addr = mHost
}
try mNetConnection!.mSocket?.connectToHost(ipv6Addr, onPort: mPort,withTimeout: 5)
CDN轉(zhuǎn)換:
由于CDN使用的是IP 而不是域名的方式,所以必須要進(jìn)行轉(zhuǎn)換妙同,否則cdn無法正常播放射富,ipv6下的cdn地址規(guī)則:http ://[ipv6下的ip]:端口,一定要注意的是將ip轉(zhuǎn)換成ipv6下的ip后,一定要將ip用[]包起來渐溶,如果端口不是默認(rèn)端口辉浦,后面一定要加上端口。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者