以下代码段:
<%= InetAddress.getLocalHost() %>
给出了这个: Feddy / 192.168.42.194
但是当我查看网站ipchicken时,我明白这一点: 106.193.214.75
为什么两个IP不同?
答案 0 :(得分:4)
106.193.214.75
是您网络的公共IP地址。
192.168.42.194
是您的本地IP地址 - 内部网络中计算机的IP。网络中的每台计算机都具有相同的公共IP地址。
答案 1 :(得分:3)
地址192.168.x.x仅适用于专用内部网络。您可以与互联网通信的事实意味着您还拥有公共IP地址。
路由器的工作是进行网络地址转换,以便您私人网络上的设备全部显示在您的公共地址中。
答案 2 :(得分:2)
服务器位于NAT之后,与公共互联网上使用的IP地址相比,本地提供了一个单独的IP地址。
使用NAT有几个原因,包括安全性和可用公共IPv4地址的限制。
答案 3 :(得分: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());
}
答案 4 :(得分:0)
一个是您的本地IP地址(来自您的路由器),另一个是您通过Internet的IP地址。
192.168始终来自路由器
答案 5 :(得分:0)
ip 192.168.42.194是您的本地IP,它由您的路由器提供给您的电脑。
另一个IP是您的WAN IP,它是由您的isp给出的,是您的路由器获取来自外部世界的连接的IP地址
答案 6 :(得分:0)
因为192.168.42.194
是您的私人IP,在您的专用网络上,106.193.214.75
是您的公用IP,由您的ISP分配给您的网关。
答案 7 :(得分:0)
在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);
}
}
}
此致