在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  Linux/ 如何通過java獲取請求的ip

如何通過java獲取請求的ip

用springboot開啟服務(wù),當(dāng)有人訪問接口的時(shí)候,記錄下客戶端的ip地址。
遇到的問題:一個(gè)局域網(wǎng)內(nèi)的出口ip都是一個(gè),那我怎么獲取這個(gè)ip局域網(wǎng)內(nèi)的每個(gè)設(shè)備的內(nèi)網(wǎng)ip呢,比如我現(xiàn)在電腦和pad在連著一個(gè)wifi,訪問我部署服務(wù)的地址(通過公網(wǎng)訪問),會(huì)發(fā)現(xiàn)接口中記錄的兩個(gè)設(shè)備的ip是一樣的,我想把這種的時(shí)候記錄設(shè)備的內(nèi)網(wǎng)ip,不知道行不行。

回答
編輯回答
陪妳哭

客戶端真實(shí)IP地址的方法一:

public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
獲得客戶端真實(shí)IP地址的方法二:

public 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; 

}
以上方法還不行的話就采用如下方法:

/** 
 * 獲取當(dāng)前網(wǎng)絡(luò)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")){  
                //根據(jù)網(wǎng)卡取本機(jī)配置的IP  
                InetAddress inet=null;  
                try {  
                    inet = InetAddress.getLocalHost();  
                } catch (UnknownHostException e) {  
                    e.printStackTrace();  
                }  
                ipAddress= inet.getHostAddress();  
            }  
        }  
        //對于通過多個(gè)代理的情況,第一個(gè)IP為客戶端真實(shí)IP,多個(gè)IP按照','分割  
        if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15  
            if(ipAddress.indexOf(",")>0){  
                ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));  
            }  
        }  
        return ipAddress;   
}
2017年4月3日 20:32
編輯回答
櫻花霓

無法得到內(nèi)網(wǎng)IP的。

2017年4月30日 05:49