我在基于wifi的聊天引擎上工作,我能够通过以下this链接检索连接到当前wifi网络的主机列表,现在获得了具有ip地址的设备列表,但我需要从ip地址获取主机名,并尝试以下操作
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();
}在这里,主机名和规范主机名都显示ip地址,而不是主机名。
请帮助我如何实现这一点。
发布于 2014-02-07 02:42:51
我认为你可以这样做:
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!");
}以下是一些附加内容:
考虑到这是一个可能需要很长时间的操作(理解为几秒钟的长时间),所以绝对建议在响应时间内在Thread或AsyncTask.
发布于 2014-02-03 15:31:51
变量canonicalHostname包含结果。使用
holder.computerName.setText("Canonical : "+canonicalHostname);发布于 2014-02-03 15:34:18
这是因为从IP地址解析主机名涉及到所谓的"Reverse DNS Lookup"。根据要连接的DNS服务器的不同,此类查找的结果也会有所不同。
https://stackoverflow.com/questions/21521844
复制相似问题