获取请求ip



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();
    }
}


转载于:https://my.oschina.net/aicoding/blog/61069

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值