【问题标题】:why the two IP differ?为什么这两个IP不同?
【发布时间】:2012-08-26 05:08:05
【问题描述】:

下面的sn-p:

<%= InetAddress.getLocalHost() %>

给出了这个:Feddy/192.168.42.194

但是当我查看网站 ipchicken 时,我得到了这个:106.193.214.75

为什么这两个IP不同?

【问题讨论】:

    标签: java ip


    【解决方案1】:

    106.193.214.75 是您网络的公共 IP 地址。

    192.168.42.194 是您的本地 IP 地址 - 内部网络中机器的 IP。您网络中的每台机器都有相同的公共 IP 地址。

    【讨论】:

      【解决方案2】:

      地址 192.168.x.x 仅用于私有内部网络。您可以与互联网交谈的事实意味着您也有一个公共 IP 地址。

      您的路由器的工作是进行网络地址转换,以便您专用网络上的设备都显示为您的公共地址。

      【讨论】:

        【解决方案3】:

        服务器位于NAT 后面,与在公共 Internet 上使用的 IP 地址相比,它在本地为其提供了一个单独的 IP 地址。

        使用 NAT 有几个原因,包括安全性和可用公共 IPv4 地址的限制。

        【讨论】:

          【解决方案4】:

          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());
                   }
          

          【讨论】:

          • 我得到的地址如下:192.168.42.250 fe80:0:0:0:4c6e:3fff:fe24:75a0%16
          • 第一个是本地IP地址,第二个是'公共'?如何将其转换为数字符号?
          • @Y.E.P 这是一个 IP v6,而你似乎想要一个 IP v4 - 你不能真正从一个到另一个。 Here is an alternative solution.
          【解决方案5】:

          ip 192.168.42.194 是你的本地ip,它是你的路由器给你的电脑的。

          另一个 ip 是您的 WAN ip,它由您的 isp 提供,是您的路由器从外部世界连接获得的 ip 地址

          【讨论】:

            【解决方案6】:

            因为192.168.42.194 是您的私有IP,在您的私有网络上,而106.193.214.75 是您的公共IP,由您的ISP 分配给您的网关。

            【讨论】:

              【解决方案7】:

              在 JDK 1.6 中

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

              问候,

              【讨论】:

              • 我的地址如下:192.168.42.250 fe80:0:0:0:4c6e:3fff:fe24:75a0%16
              • 第一个是本地IP地址,第二个是'公共'?如何将其转换为数字符号?
              • 这种情况下你只有一个IP V4(192.168.42.250)和一个IP V6(fe80:0:0:0:4c6e:3fff:fe24:75a0%16),是一样的输入旧版本和新版本
              • 如果你没有得到更多的 ip 意味着你在网络上有一个路由器,这会将你的 ip 重定向到你网络的公共 ip,公共 IP 是在路由器上配置的
              【解决方案8】:

              一个是您的本地 IP 地址(来自您的路由器),另一个是您在 Internet 上的 IP 地址。

              192.168 始终来自路由器

              【讨论】:

              • rooter,路由器,名册,总是一样的 ;)
              猜你喜欢
              • 2015-12-21
              • 1970-01-01
              • 2012-09-21
              • 2015-03-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-12-10
              相关资源
              最近更新 更多