TEL:400-8793-956
当前位置:开发工具

如何通过Java获取请求的IP地址

提问者: 近期获赞: 浏览人数: 发布时间:2021-01-22 13:36:50

 问:使用springboot启动服务。当有人访问界面时,记录客户端的IP地址。

遇到的问题:局域网中只有一个出口IP,那么如何获取局域网中每个设备的Intranet IP?例如,我的计算机和平板电脑都连接到WiFi,以访问我的部署服务的地址(通过公共网络),我会发现接口中记录的两个设备的IP是相同的。我想记录该设备的Intranet IP,但是我不知道是否可以。
 
 
答:第一种方法是选择客户端
公共字符串的真实IP地址getRemortIP(HttpServletRequest request){
if(request.getHeader(“ x-forwarded-for”)== null){
return request.getRemoteAddr();
}
返回request.getHeader(“ x-forwarded-for”);
}
第二种方法是获取客户端
公共IP的真实IP地址。String getIpAddr(HttpServletRequest request){
 
   String ip = request.getHeader("x-forwarded-for"); 
   if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
       ip = request.getHeader("Proxy-Client-IP"); 
   } 
   if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
       ip = request.getHeader("WL-Proxy-Client-IP"); 
   } 
   if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 
       ip = request.getRemoteAddr(); 
   } 
   return ip; 
}
如果上述方法还不够,则应采用以下方法:
 
/** 
 *Get the current network IP 
 * @param request 
 * @return 
 */  
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")){  
                //According to the network card, get the IP configured by the machine  
                InetAddress inet=null;  
                try {  
                    inet = InetAddress.getLocalHost();  
                } catch (UnknownHostException e) {  
                    e.printStackTrace();  
                }  
                ipAddress= inet.getHostAddress();  
            }  
        }  
        //In the case of multiple agents, the first IP is the real IP of the client, and multiple IP are divided according to ','  
        if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15  
            if(ipAddress.indexOf(",")>0){  
                ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));  
            }  
        }  
        return ipAddress;   
}
上一篇: 为什么跨域打开某些页面后就无法立即加载它们
下一篇: 此徽标在Google开发人员模式下是什么意思?
城市网站导航:无锡网站建设 徐州企业网站定制 常州网站开发哪家好 苏州网站改版 南通网站开发 连云港网站建设 淮安网站建设公司 盐城网站定制 扬州网站改版公司 镇江网站开发 泰州高端网站制作 宿迁高端网站开发 江阴高端网站开发 宜兴建设网站 新沂建设网站 邳州建设网站 常熟建设网站 张家港网站改版 昆山公司网站开发 太仓高端网站制作 丹阳高端网站制作 句容专业建站 泰兴网站制作公司 合肥网站建设 芜湖网站制作 蚌埠网站建设 淮南网站制作哪家好 马鞍山网站建设 铜陵网站制作公司 安庆网站建设公司 黄山网站制作 滁州网站建设 阜阳网站设计 六安网站建设 亳州网站制作 宣城网站建设 巢湖网站建设哪家好 桐城网站制作 天长网站建设 明光网站建设 全椒网站建设 扬中网站建设公司 城市小程序导航: