/etc/hosts 内の IP を変更したにもかかわらず、InetAddress.getLocalHost() が常に 127.0.0.1 を返す理由を知っている人はいますか? 変更後
hostname -i
正しい IP (192.168.xx) を返しますが、InetAddress.getLocalHost() は名前のままです。
ちなみに、CentOS 6.2でjdk 1.6.0_31を使用しています。ありがとう!
変更を「適用」するには、PCを再起動するか、DNSキャッシュをクリアする必要があるためです
これは、セキュリティ制限の問題である可能性があります。javadocから:
セキュリティ マネージャがある場合、ローカル ホスト名と -1 を引数として使用してその checkConnect メソッドが呼び出され、操作が許可されているかどうかが確認されます。操作が許可されていない場合は、ループバック アドレスを表す InetAddress が返されます。
まず、セキュリティ マネージャが操作が許可されていないことを検出した場合、LocalHost は常に LoopBack アドレス 127.0.0.1 (TCP/IP スタックのデバッグに使用されます) を表します。
LANアドレス用InetAddress.getByName("PC NAME").getHostAddress()
PC NAME をあなたの PC 名に置き換えてください。
例えば:
public class StrTest {
public static void main(String[] args) throws IOException {
System.out.println(InetAddress.getByName("Vicky-PC").getHostAddress());
}
}