ios中 根據網域名稱動態獲取ip位址

2021-06-29 04:40:40 字數 1014 閱讀 1904

為什麼動態獲取ip呢,

在正常的網路請求中,理論上其實訪問的是ip位址,網際網路中用乙個ip去標識乙個計算機,但是單純的用ip訪問也會引發諸如安全性或因伺服器變更引發的問題,所以dns出現了,不了解dns的 可以先去了解一下dns,dns的出現解決了ip訪問引發的問題,但也造成請求時間和效能上的犧牲,因為多了乙個去dns系統查詢特定ip的操作,拿到ip之後再去進去伺服器的訪問請求,

如果我們在專案中直接就可以獲取到ip的話,是不是直接就省略了我們的請求到dns的時間呢,只是之前放在網路處理的部分我們放在本地完成了而已,

//根據網域名稱 動態獲取ip位址

+ (nsstring*)getipwithhostname:(const nsstring*)hostname

}@catch (n***ception *exception)

struct in_addr ip_addr;

memcpy(&ip_addr, phot->h_addr_list[0], 4);

char ip[20] = ;

inet_ntop(af_inet, &ip_addr, ip, sizeof(ip));

nsstring* stripaddress = [nsstring stringwithutf8string:ip];

return stripaddress;

}這個方法因為引用了一些c 庫中的方法,需要引入三個檔案

#include

#include

#include

這樣就可以解決了!

------------2017.8.17 更新----------

因工作原因,一直沒有來得及整理

上面講的是獲取ip的方式是通過底層api 從運營商處查詢ip,還是會存在dns劫持可能,所以本地講解的是第二種主流方案

基於dnspod的ip解析,

查詢方式為

ip處理原理:

1,通過dnspod獲取到ip 儲存到本地,每次應用從本地查詢網域名稱對應的 ip列表

github: 

iOS 根據網域名稱獲取ip位址

包含標頭檔案 include includeobjective c 相容c,所以可以使用c的庫函式 nsstring getipaddressbyhostname nsstring strhostname catch n ception e struct in addr ip addr memcpy...

根據網域名稱獲取對應IP

1.獲取單個ip 如果有多個ip,則獲取的是列表中的第乙個 如下 domain 網域名稱 例如 www.baidu.com public static string getip string domain catch unknownhostexception uhe 2.如果該網域名稱對應多個ip,...

根據網域名稱獲取ip位址

1如何查詢 網域名稱對應的ip位址 在電腦左下角搜尋cmd 在命令提示符中輸入 ping www.pm25.in 在電腦左下角搜尋執行,輸入cmd 在命令提示符中輸入 ping www.pm25.in 得到ip 106.187.49.54 2如何檢查獲取的ip是否正確?c windows syste...