2011-05-18 61 views
6

我試圖在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

回答

2

一個快速和骯髒的方式做到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

2

從「男人主機的 /等主機(或Windows等價物)/格式如下:

ip_address fully_qualified_name aliases 

所以在你的情況下,hosts文件看起來像:

10.44.2.167 myserver.domain.com myserver another_alias 

當Java那樣主機查找,如果/ etc/hosts中有一個條目,它會搶了第一HOST_NAME(不是別名),我的機器上

相關問題