1

次のスニペット:

<%= InetAddress.getLocalHost() %>

これを与える:Feddy / 192.168.42.194

しかし、私がウェブサイトipchickenをチェックすると、私はこれを取得します:106.193.214.75

2つのIPが異なるのはなぜですか?

4

8 に答える 8

4

106.193.214.75ネットワークのパブリックIPアドレスです。

192.168.42.194ローカルIPアドレスです-内部ネットワーク内のマシンのIP。ネットワーク内のすべてのマシンは、同じパブリックIPアドレスを持っています。

于 2012-08-31T11:29:12.727 に答える
3

アドレス192.168.xxは、プライベート内部ネットワーク専用です。インターネットと通信できるということは、パブリックIPアドレスも持っていることを意味します。

プライベートネットワーク上のすべてのデバイスがパブリックアドレスとともに表示されるように、ネットワークアドレス変換を行うのはルーターの仕事です。

于 2012-08-31T11:29:04.010 に答える
2

サーバーはNATの背後にあり、パブリックインターネットで使用されているものとは異なるIPアドレスをローカルに提供します。

NATが使用される理由はいくつかあります。たとえば、セキュリティや使用可能なパブリックIPv4アドレスの制限などです。

于 2012-08-31T11:29:23.250 に答える
1

192.168.xx.xxは、ネットワーク上のローカルIPです。106.193.xxxは外部IPです。

次のコードで両方を取得できます。

        String hostName = InetAddress.getLocalHost().getHostName();

        InetAddress[] addresses = InetAddress.getAllByName(hostName);
         for (InetAddress a: addresses) {
             System.out.println(a.getHostAddress());
         }
于 2012-08-31T11:32:38.713 に答える
0

なぜなら192.168.42.194、あなたのプライベートIPは、あなたのプライベートネットワーク上にあり、106.193.214.75あなたのパブリックIPは、あなたのISPによってあなたのゲートウェイに割り当てられているからです。

于 2012-08-31T11:30:04.003 に答える
0

JDK1.6では

List<InetAddress> addrs = new ArrayList<InetAddress>();
for(NetworkInterface ni : NetworkInterface.getNetworkInterfaces()) {
   if(ni.isUp()) {
      for(InetAddress addr : ni.getInetAddresses()) {
        addrs.add(addr);
      }
   }
}

よろしく、

于 2012-08-31T11:30:05.730 に答える
0

1つは(ルーターからの)ローカルIPアドレスで、もう1つはインターネット経由のIPアドレスです。

192.168は常にルーターからのものです

于 2012-08-31T11:29:53.947 に答える
0

ip 192.168.42.194はローカルIPであり、ルーターからPCに渡されます。

もう1つのIPはWANIPであり、ISPによって指定され、ルーターが外部からの接続のために取得するIPアドレスです。

于 2012-08-31T11:29:54.563 に答える