代码之家  ›  专栏  ›  技术社区  ›  God Usopp

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

  •  3
  • God Usopp  · 技术社区  · 9 年前

    我正在尝试使用网络上的本地IP地址获取设备的名称。我应该这样做吗?例如,Arnold PC和id-nnnnnnnnn

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

    上面应该给我主机名……但应该给我本地IP地址。-192.168.2.101

    根据文件。。。

    公共字符串getHostName()

    返回与此IP地址对应的主机名。这可能或 可能不是完全限定的名称。如果IP地址不能 解析后,将返回数字表示形式

    为什么找不到主持人的名字?

    我对计算机网络不太了解…所以请原谅我的无知P

    2 回复  |  直到 9 年前
        1
  •  0
  •   Community CDub    7 年前

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

    如果你做不到,那么你的DNS就会被破坏

    我想在这里引用java文档中的几行

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

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

    也看看这个答案

    link

        2
  •  0
  •   lase    9 年前

    来自文档

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

    看起来很简单 getHostName() 如果无法联系到DNS服务器,则不会查找该名称。DNS服务器将为主机IP地址命名,就像电话簿一样。给 getCanonicalHostName() 一次尝试。

    推荐文章