« 出張 | メイン | eclipse »

getLocalHost()

Javaで次のような関数呼び出しを行ったとします。

try {
System.out.println("My address=" + java.net.InetAddress.getLocalHost().toString());
} catch (UnknownHostException e) {
e.printStackTrace();
}

私のメインのマシンでは、正常にホスト名を表示します。
ところが、ホスト名を日本語にすると、UnknownHostExceptionをはくようです。
このあたりはJavaの実装が甘いのではないかと思ったりもします。

解決方法として、Java1.4から導入されたjava.net.NetworkInterfaceクラスを用いて、
まず、NICを取得する。
java.util.Enumeration enuIfs = NetworkInterface.getNetworkInterfaces();
while (enuIfs.hasMoreElements())
{
NetworkInterface ni = (NetworkInterface)enuIfs.nextElement();
}

次に、それぞれのNICに対して、IPアドレス、ホスト名を取得する
java.util.Enumeration enuAddrs = ni.getInetAddresses();
while (enuAddrs.hasMoreElements())
{
InetAddress in4 = (InetAddress)enuAddrs.nextElement();
in4.getHostAddress();
in4.getHostName();
}

こうすれば、当然ながらExceptionは発生しません。
ただし、getHostName()では日本語のホスト名ではなく、やっぱりIPアドレスが取得されます。

トラックバック

このエントリーのトラックバックURL:
http://soba-project.info/cgi/mt/mt-tb.cgi/19

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2006年10月19日 20:11に投稿されたエントリーのページです。

ひとつ前の投稿は「出張」です。

次の投稿は「eclipse」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type