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

from'man hosts' / etc / hosts(または同等のWindows)の形式は次のとおりです。

ip_address  fully_qualified_name   aliases

したがって、あなたの場合、hostsファイルは次のようになります。

10.44.2.167 myserver.domain.com   myserver another_alias

Javaがホストルックアップを行う場合、/ etc / hostsにエントリがあると、最初のhost_name(エイリアスではない)が取得されます。

于 2012-02-15T20:37:23.377 に答える
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 に答える