android解析ip地址,android – 如何从IP地址解析网络主机名
我正在研究基于wifi的聊天引擎,我能夠通過跟隨this鏈接檢索連接到當(dāng)前wifi網(wǎng)絡(luò)的主機(jī)列表,現(xiàn)在獲得了具有ip地址的設(shè)備列表但我需要來自ip地址的主機(jī)名并嘗試以下
InetAddress inetAddr;
try {
inetAddr = InetAddress.getByName(host.hostname);
String hostname = inetAddr.getHostName();
String canonicalHostname = inetAddr.getCanonicalHostName();
holder.computerName.setText("Canonical : "+host.hostname);
} catch (Exception e) {
e.printStackTrace();
}
這里主機(jī)名和規(guī)范主機(jī)名都顯示ip地址而不是主機(jī)名.
請(qǐng)幫我解決這個(gè)問題.
解決方法:
我想你可以這樣做:
try {
Log.d("ReverseDNS", "Reverse DNS for 8.8.8.8 is: " + InetAddress.getByName("8.8.8.8").getHostName());
} catch (UnknownHostException e) {
Log.e("ReverseDNS", "Oh no, 8.8.8.8 has no reverse DNS record!");
}
一些額外的東西:
>考慮到這是一個(gè)可能需要很長時(shí)間的操作(理解為長時(shí)間幾秒),因此絕對(duì)建議在Thread或AsyncTask中完成.
>除響應(yīng)時(shí)間外,這是一個(gè)網(wǎng)絡(luò)操作,因此您需要在UI線程之外執(zhí)行此操作.
>還要記住,每個(gè)主機(jī)都有一個(gè)關(guān)聯(lián)的IP地址,但并非每個(gè)IP地址都有一個(gè)反向主機(jī),因此操作可能會(huì)失敗,您也需要處理它.
>您要查詢的DNS服務(wù)器是您的提供商之一(或者如果您計(jì)劃在不同客戶端中運(yùn)行此服務(wù)提供商,則為客戶提供商).這意味著并非每個(gè)結(jié)果都是一樣的.例如,您的DNS服務(wù)器可能無法解析IP的反向主機(jī),而其他DNS服務(wù)器可能無法解析.
標(biāo)簽:android-networking,android,ip,android-wifi,hostname
來源: https://codeday.me/bug/20191002/1842491.html
總結(jié)
以上是生活随笔為你收集整理的android解析ip地址,android – 如何从IP地址解析网络主机名的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android自定义optionmenu
- 下一篇: nexus 6p Android SDK