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

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

图片说明

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

6个回答

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

qq_34654085
张小北2 对啊 一开始是0.0.0.0.0.0.0.1 但是我改用花生壳外网穿透得到的是本机的IP地址 但是我把链接发给其他的电脑 他们登录显示的还是我的IP,,不知道咋整的
接近 2 年之前 回复

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

eguid_1
-eguid- 回复张小北2: 用你同事的电脑,访问你这个接口就可以获取对方的地址
接近 2 年之前 回复
qq_34654085
张小北2 请问怎样得到的是对方的IP地址 而不是我的呢
接近 2 年之前 回复

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

qq_34654085
张小北2 就是访问了 才发现显示的地址是我的IP地址 记录在数据库的地址也是我自己的..
接近 2 年之前 回复

用request.getLocalAddr()也是这样吗?

eguid_1
-eguid- 如果得到192.168.xx.xxx的地址,那就是正常的
接近 2 年之前 回复
eguid_1
-eguid- 回复张小北2: 用dhcp分配的192.168.xx.xxx访问你的接口地址试试
接近 2 年之前 回复
qq_34654085
张小北2 是啊。。。
接近 2 年之前 回复

用以下代码试试。

 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地址。如果是其他电脑的,直接把你的访问地址发送给同事或者朋友,前提是同在一个局域网。这样可以获取他们的内网地址。
如果需要获取外网地址,就需要你把项目发布到服务器上去了,可以用花生壳试一下

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问