首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从IP地址解析网络主机名

问如何从IP地址解析网络主机名
EN

Stack Overflow用户
提问于 2014-02-03 15:27:15
回答 3查看 5K关注 0票数 1

我在基于wifi的聊天引擎上工作,我能够通过以下this链接检索连接到当前wifi网络的主机列表,现在获得了具有ip地址的设备列表,但我需要从ip地址获取主机名,并尝试以下操作

代码语言:javascript
复制
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地址,而不是主机名。

请帮助我如何实现这一点。

EN

回答 3

Stack Overflow用户

发布于 2014-02-07 02:42:51

我认为你可以这样做:

代码语言:javascript
复制
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.

  • Besides内完成,这是一个网络操作,所以您需要在UI线程之外完成。

  • 还请记住,每个主机都有一个相关的IP地址,但并不是每个IP地址都有一个反向主机,因此该操作可能会失败,您也需要处理这一点。

  • 您要查询的

  • 服务器是您的提供商(如果您计划在不同的客户端中运行该服务器,则是客户端的提供商)。这意味着不是所有的结果都是一样的。例如,您的DNS服务器可能无法解析IP的反向主机,而另一台DNS服务器可能会解析。
票数 5
EN

Stack Overflow用户

发布于 2014-02-03 15:31:51

变量canonicalHostname包含结果。使用

代码语言:javascript
复制
holder.computerName.setText("Canonical : "+canonicalHostname);
票数 0
EN

Stack Overflow用户

发布于 2014-02-03 15:34:18

这是因为从IP地址解析主机名涉及到所谓的"Reverse DNS Lookup"。根据要连接的DNS服务器的不同,此类查找的结果也会有所不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21521844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档