java中的IP地址冲突
我试着用两种不同的方法获取我的计算机的IP地址。第一种方法是只使用谷歌java中的IP地址冲突,java,ip-address,Java,Ip Address,我试着用两种不同的方法获取我的计算机的IP地址。第一种方法是只使用谷歌ip地址。第二种方法是用Java运行以下代码: public class YourIPAddress { public static void main(String[] args) { InetAddress ip; try { ip = InetAddress.getLocalHost(); System.out.println(ip); System.out.println("Cur
ip地址
。第二种方法是用Java运行以下代码:
public class YourIPAddress {
public static void main(String[] args) {
InetAddress ip;
try {
ip = InetAddress.getLocalHost();
System.out.println(ip);
System.out.println("Current IP address : " + ip.getHostAddress());
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
}
Google返回
50.90.142.29
,而Java返回192.168.0.11
。为什么IP地址会发生这种冲突?192.160.0.11是专用/内部IP地址,而50.90.142.29是公用/外部IP地址一个是路由器的外部IP地址。另一个是你的计算机在本地网络上的IP地址。欢迎来到奇妙的NAT世界,这是几乎所有住宅和许多商业网络都是如何建立的。哪个专用IP地址将是我的路由器的地址?路由器上的专用地址可能是192.168.0.1。192.168.0.11可能是您计算机的私有ip,然后是另一个关于此应用的问题(我提出此问题的原因):如果您为向您计算机提交数据的用户制作程序,您(客户)是否需要知道其私有或公共ip地址?如果是公共的,您在Java中如何尽可能简单地获取此类信息?编辑:答案可能是这个问题的公认答案:您需要从servlet获取客户端的远程地址,就像这里的最佳答案一样:request.getRemoteAddr();但也要像响应那样检查代理案例