关于java获取客户IP地址的问题

请问 我在java中是这样写的,我想获取客户登录页面时的电脑IP地址:
图片说明

图片说明

但是控制台打印的却永远是自己的IP地址....这怎么回事????

你是本地开发测试,登录后发现ip都是127.0.0.1或0.0.0.0.0.0.0.1 这样吗?

需要看你的客户端访问是通过什么方式过来!

你从另外一台机器访问看看

用以下代码试试。

 public String getIpAddr(HttpServletRequest request){  
        String ipAddress = request.getHeader("x-forwarded-for");  
            if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {  
                ipAddress = request.getHeader("Proxy-Client-IP");  
            }  
            if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {  
                ipAddress = request.getHeader("WL-Proxy-Client-IP");  
            }  
            if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {  
                ipAddress = request.getRemoteAddr();  
                if(ipAddress.equals("127.0.0.1") || ipAddress.equals("0:0:0:0:0:0:0:1")){  
                    //根据网卡取本机配置的IP  
                    InetAddress inet=null;  
                    try {  
                        inet = InetAddress.getLocalHost();  
                    } catch (UnknownHostException e) {  
                        e.printStackTrace();  
                    }  
                    ipAddress= inet.getHostAddress();  
                }  
            }  
            //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割  
            if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15  
                if(ipAddress.indexOf(",")>0){  
                    ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));  
                }  
            }  
            return ipAddress;   
    }

获取本地的ip那你的访问地址就不要写成localhost,要写成你自己电脑的ip地址。如果是其他电脑的,直接把你的访问地址发送给同事或者朋友,前提是同在一个局域网。这样可以获取他们的内网地址。
如果需要获取外网地址,就需要你把项目发布到服务器上去了,可以用花生壳试一下