6

我正在尝试用 Java 获取我的机器(Windows 7 x64)的完全限定名称。在我的机器上,我更新了 c:\Windows\system32\drivers\etc\hosts 文件,使其具有如下条目:

10.44.2.167 myserver myserver.domain.com

我们所有的系统在 \etc\hosts 文件中都有一个我无法更改的条目(采用上述格式)。

以下代码始终返回“myserver”,我永远无法获得完全限定的名称。

InetAddress addr = InetAddress.getLocalHost();
String fqName = addr.getCanonicalHostName();

我如何在 Java 中实现这一点?

谢谢,

什雷亚斯

4

2 回答 2

2

一种快速而肮脏的方法

try {
InetAddress addr = InetAddress.getLocalHost();

// Get IP Address
byte[] ipAddr = addr.getAddress();

// Get hostname
String hostname = addr.getHostName();
} catch (UnknownHostException e) {
}
于 2011-05-18T18:24:14.017 回答
2

来自 'man hosts' /etc/hosts (或 windows 等价物)的格式如下:

ip_address  fully_qualified_name   aliases

所以在你的情况下,主机文件看起来像:

10.44.2.167 myserver.domain.com   myserver another_alias

当 Java 进行主机查找时,如果 /etc/hosts 有一个条目,它将获取第一个 host_name(不是别名)

于 2012-02-15T20:37:23.377 回答