5

/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を使用しています。ありがとう!

4

4 に答える 4

1

変更を「適用」するには、PCを再起動するか、DNSキャッシュをクリアする必要があるためです

于 2012-07-21T14:19:18.347 に答える
1

これは、セキュリティ制限の問題である可能性があります。javadocから:

セキュリティ マネージャがある場合、ローカル ホスト名と -1 を引数として使用してその checkConnect メソッドが呼び出され、操作が許可されているかどうかが確認されます。操作が許可されていない場合は、ループバック アドレスを表す InetAddress が返されます。

于 2012-07-21T14:20:47.113 に答える
0
  1. まず、セキュリティ マネージャが操作が許可されていないことを検出した場合、LocalHost は常に LoopBack アドレス 127.0.0.1 (TCP/IP スタックのデバッグに使用されます) を表します。

  2. 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());

    }

}
于 2012-07-21T14:26:53.833 に答える