下面的代碼片段:爲什麼兩個IP有區別?
<%= InetAddress.getLocalHost() %>
給出這樣的:Feddy/192.168.42.194
,但是當我檢查網站ipchicken,我得到這個:106.193.214.75
爲什麼兩個IP不同?
下面的代碼片段:爲什麼兩個IP有區別?
<%= InetAddress.getLocalHost() %>
給出這樣的:Feddy/192.168.42.194
,但是當我檢查網站ipchicken,我得到這個:106.193.214.75
爲什麼兩個IP不同?
106.193.214.75
是您的網絡的公共IP地址。
192.168.42.194
是您的本地IP地址 - 機器在內部網絡中的IP地址。網絡中的每臺計算機都具有相同的公共IP地址。
地址192.168.x.x僅用於私有內部網絡。你可以與互聯網交談的事實意味着你也有一個公共IP地址。
它是您的路由器做網絡地址轉換的工作,以便您的專用網絡上的設備都與您的公共地址一起顯示。
+1提及NAT –
服務器位於NAT之後,與公共Internet上使用的IP地址相比,本地IP地址爲單獨的IP地址。
使用NAT有幾個原因,包括安全性和可用公共IPv4地址的限制。
的IP 192.168.42.194是你的本地IP,它是由你的路由器給你的電腦。
對方IP的廣域網IP,它是由您的ISP給出的IP地址是你的路由器得到來自外界的連接
因爲192.168.42.194
是你的私有IP,你的專用網絡上,並106.193.214.75
您的公共網絡,由您的ISP分配給您的網關。
在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),它與舊版本和新版本的輸入相同 –
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 - 你不能真正從一個轉換到另一個。 [這是一個替代解決方案](http://stackoverflow.com/questions/2939218/getting-the-external-ip-address-in-java)。 – assylias
也許Proxy功能? –