完全合格的计算机名称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) { 
} 
+0

这仍返回短名称。 – 2011-05-18 18:32:57

+3

尝试[此链接](http://download.oracle.com/javase/1.4.2/docs/api/java/net/InetAddress.html#getCanonicalHostName())通过调用getCanonicalHostName()来检索标准主机名) – Kyle 2011-05-18 18:37:26

+0

getCanonicalHostName()是我正在使用的,但由于我的etc/hosts文件,它不起作用。 – 2011-05-18 18:57:01

从“男人主机的 /等主机(或Windows等价物)/格式如下:

ip_address fully_qualified_name aliases 

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

10.44.2.167 myserver.domain.com myserver another_alias 

当Java那样主机查找,如果/ etc/hosts中有一个条目,它会抢了第一HOST_NAME(不是别名),我的机器上