带/ etc/hosts的完全限定机器名Java

Shr*_*nde 6 java fully-qualified-naming inetaddress

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

10.44.2.167 myserver myserver.domain.com
Run Code Online (Sandbox Code Playgroud)

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

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

InetAddress addr = InetAddress.getLocalHost();
String fqName = addr.getCanonicalHostName();
Run Code Online (Sandbox Code Playgroud)

我如何用Java实现这一目标?

谢谢,

Shreyas

Kyl*_*yle 2

一种快速而肮脏的方法

try {
InetAddress addr = InetAddress.getLocalHost();

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

// Get hostname
String hostname = addr.getHostName();
} catch (UnknownHostException e) {
}
Run Code Online (Sandbox Code Playgroud)

  • 尝试[此链接](http://download.oracle.com/javase/1.4.2/docs/api/java/net/InetAddress.html#getCanonicalHostName())通过调用 getCanonicalHostName() 检索完全限定的主机名 (3认同)