获取请求ip

package org.plugbase.webim.util;

import javax.servlet.http.HttpServletRequest;

public class ClientUtil {
    public static String getIpAddr(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if(ip != null && ip.indexOf(',') > 7) ip = ip.split(",")[0];
       
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Real-IP");
        }
        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;
    }

}

ip的工具类:

public class IPUtil {
    /**
     * @description ip转换成long
     * @param addr ip
     * @return long
     */
    public static long addr2ip(String addr)
    {
        long[] ret = new long[4];
        String[] st = addr.split("\\.");
        try {
            ret[0] = Long.parseLong(st[0]) << 24;
            ret[1] = Long.parseLong(st[1]) << 16;
            ret[2] = Long.parseLong(st[2]) << 8;
            ret[3] = Long.parseLong(st[3]);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return ret[0] + ret[1] + ret[2] + ret[3];
    }
   
    /**
     * @description long型IP转换成String
     * @param ip long型ip
     * @return String
     */
    public static String ip2addr(long ip) {

        StringBuffer sb = new StringBuffer();
        sb.append(ip >> 24);
        sb.append('.');
        sb.append((ip & 0x00FF0000) >> 16);
        sb.append('.');
        sb.append((ip & 0x0000FF00) >> 8);
        sb.append('.');
        sb.append(ip & 0x000000FF);
        return sb.toString();
    }
}


你可能感兴趣的:(获取请求ip)