gpt4 book ai didi

java - 无法从 getHostName 获取主机名

转载 作者:行者123 更新时间:2023-12-01 04:43:15 24 4
gpt4 key购买 nike

我正在尝试使用此方法获取主机名/计算机名。不幸的是,我只能获得 localhost 而不是其他计算机。

private String getHostName(String _strIP) {
try {
InetAddress inetAddress = InetAddress.getByName(_strIP);
System.out.println("getHostAddress : " + inetAddress.getHostAddress());
System.out.println("getHostName : " + inetAddress.getHostName());
System.out.println("getCanonicalHostName : " + inetAddress.getCanonicalHostName());
return inetAddress.getHostName();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return strDefaultHostName;
}

结果(不是本地主机)
getHostAddress : 192.168.2.139
getHostName : 192.168.2.139
getCanonicalHostName : 192.168.2.139

结果(本地主机)
getHostAddress : 127.0.0.1
getHostName : localhost
getCanonicalHostName : localhost

谢谢

最佳答案

我们已经大致确定了 tangens 答案中的问题所在。

我认为您可以通过将主机名放入主机文件中来解决这个问题。

%SystemRoot%\system32\drivers\etc\hosts

是您要查找的文件;本地主机在这里定义。您想为要解析的每个主机在其中放置一个名称和地址行。

我从来没有试过这个。如果它不起作用,你会拿回你的钱。

更新

以上是“快速破解”解决方案。这实质上意味着每当有人手动更改您感兴趣的主机的 IP 地址时,必须同时更改 hosts。任何想要访问这些主机的机器上的文件。

另一种选择是操作您自己的 DNS 服务器。当主机的地址发生变化时,您仍然需要更新 IP 地址,但您只需要在一个地方这样做,您就可以在整个网络中获得正向和反向名称解析。这需要更多的设置,但从长远来看更容易维护。

这是一个非常有用的引用: http://www.dns.net/dnsrd/servers/windows.html

他们提到“内置”Microsoft DNS 服务器是一个糟糕的解决方案(直到 Windows 2003 Server 中的那个),但至少提到了两种替代方案,一种是商业的,一种是免费的。 BIND 是目前将大部分 Internet 连接在一起的东西,在 DNS 方面,而且它们也有一个 Windows 端口真是太棒了。

关于java - 无法从 getHostName 获取主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1899288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com