为什么Java的InetAddress getHostName()没有给我主持人的名字?

时间:2015-12-23 13:37:50

标签: java android networking host inetaddress

我尝试使用网络上的本地IP地址获取设备的名称。这是我应该怎么做的? ex)Arnold-PC,andoid-nnnnnnnnnn

String name = InetAddress.getByName(ip).getHostName();
System.out.println(name);

上面应该给我主持人的名字......但是给了我本地的IP地址。 - 192.168.2.101

根据文件...

public String getHostName()

  

返回与此IP地址对应的主机名。这可能或   可能不是完全合格的名称。如果IP地址不能   已解决,而是返回数字表示

为什么无法找到主持人的姓名?

我对计算机网络知之甚少...所以请原谅我的无知。 :P

2 个答案:

答案 0 :(得分:0)

在命令提示符下检查是否可以使用nsloookup解析ip地址

如果你不能,那么你的DNS坏了

我想引用java文档中的几行

  

getCanonicalHostName()获取此属性的完全限定域名   IP地址。尽力而为的方法,意味着我们可能无法返回   FQDN取决于底层系统配置。

另一个技巧是编辑主机文件以获得输出(不推荐)

也看看这个答案

link

答案 1 :(得分:0)

来自文档

  

如果使用主机名创建此InetAddress,则将记住并返回此主机名;否则,将执行反向名称查找,并将根据系统配置的名称查找服务返回结果。如果需要查找名称服务,请调用getCanonicalHostName。

如果名称getHostName()无法联系到DNS服务器,那么它似乎不会查找该名称。 DNS服务器将为主机IP地址命名,就像电话簿一样。试试getCanonicalHostName()