JAVA獲取IP地址程式碼
阿新 • • 發佈:2019-01-04
private static final String NUKNOWN = "unknown"; private static final String[] ADDR_HEADER = { "X-Forwarded-For", "Proxy-Client-IP", "WL-Proxy-Client-IP", "X-Real-IP" }; /** * 獲取客戶端真實IP * * @param request * @return */ public static String getIpAddr(HttpServletRequest request) { String addr = null; for (String header : ADDR_HEADER) { if (StringUtil.isEmpty(addr) || NUKNOWN.equalsIgnoreCase(addr)) { addr = request.getHeader(header); } else { break; } } if (StringUtil.isEmpty(addr) || NUKNOWN.equalsIgnoreCase(addr)) { addr = request.getRemoteAddr(); if(addr.equals("127.0.0.1") || addr.equals("0:0:0:0:0:0:0:1")){ //根據網絡卡取本機配置的IP InetAddress inet=null; try { inet = InetAddress.getLocalHost(); } catch (UnknownHostException e) { e.printStackTrace(); } addr= inet.getHostAddress(); } } else { // 對於通過多個代理的情況,第一個IP為客戶端真實IP,多個IP按','分割 int i = addr.indexOf(","); if (i > 0) { addr = addr.substring(0, i); } } return addr; }