完全合格的计算机名称Java与/ etc/hosts
问题描述:
我试图在Java中获取我的计算机(Windows 7 x64)的完全限定名称。在我的机器,我已经更新了C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ ETC \ hosts文件,使得它具有这样的条目:完全合格的计算机名称Java与/ etc/hosts
10.44.2.167 myserver myserver.domain.com
我们所有的系统都在\等\主机条目文件(以上述格式),我无法更改。
以下代码总是返回“myserver”,我永远无法获得完全限定的名称。
InetAddress addr = InetAddress.getLocalHost();
String fqName = addr.getCanonicalHostName();
如何在Java中实现此目的?
感谢,
Shreyas
答
一个快速和肮脏的方式做到this:
try {
InetAddress addr = InetAddress.getLocalHost();
// Get IP Address
byte[] ipAddr = addr.getAddress();
// Get hostname
String hostname = addr.getHostName();
} catch (UnknownHostException e) {
}
答
从“男人主机的 /等主机(或Windows等价物)/格式如下:
ip_address fully_qualified_name aliases
所以在你的情况下,hosts文件看起来像:
10.44.2.167 myserver.domain.com myserver another_alias
当Java那样主机查找,如果/ etc/hosts中有一个条目,它会抢了第一HOST_NAME(不是别名),我的机器上
这仍返回短名称。 – 2011-05-18 18:32:57
尝试[此链接](http://download.oracle.com/javase/1.4.2/docs/api/java/net/InetAddress.html#getCanonicalHostName())通过调用getCanonicalHostName()来检索标准主机名) – Kyle 2011-05-18 18:37:26
getCanonicalHostName()是我正在使用的,但由于我的etc/hosts文件,它不起作用。 – 2011-05-18 18:57:01