LinuxでのLocalhostは/etc/hostsの一番先頭のエントリ

情報ソース:http://www.beasys.co.jp/cs/newsletter/eSupportNews_072005.htm

getAllByName() で返される IP アドレスの順序については JVM の仕様に規定されていないため
JVM のベンダの実装に依存いたします。多くの UnixJVM の実装では HOSTS
ファイルのエントリの順で返されるため ・・・

ビンゴー!と思わずつぶやいてしまいました。
ある客先で、UDPのソースIPが実IPアドレスと違って、困って探していたら見つけましたよ。
で、実験。(OSはRHEL4 update2)

/etc/hosts
127.0.0.1       localhost.localdomain   localhost
172.24.126.2    hoge
172.24.126.3    hogehoge

Linuxマシンの実IPは172.24.126.3にしておく。

以下の実験コードをコンパイルして、実行した。

import java.net.InetAddress;
import java.net.UnknownHostException;

public class InetAddrTest {
	public static void main(String[] args) {
		try {
			System.out.println(InetAddress.getLocalHost().toString());
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
	}

}

すると、
hoge/172.24.126.2
と表示されました。

知らなかったよ〜orz

ということで、メモ残しました。誰かのお役に立てればイイですが。

(追記)UDPで送る際にはHostsの内容を見て居ないようですorz..うれしくてメモしたのに、別の問題みたいで残念。。。。