Java 获取得到访客真实IP地址

package cn.net.zzfz.center.common.util;


import java.util.StringTokenizer;


import javax.servlet.http.HttpServletRequest;


import org.apache.commons.lang3.StringUtils;


public class IpUtil {


/** 默认空值 */
private static final String EMPTY = "-";


/**
* 得到访客真实IP地址
*/
public static String getRemoteTrueIp(HttpServletRequest request) {
// 首先获得用户的代理服务
String fromIp = request.getHeader("x-forwarded-for");
// logger.info("获取到用户的原始的HTTP_X_FORWARDED_FOR:{}", fromIp);


// 再获取nginx的ip
if (StringUtils.isBlank(fromIp) || "unknown".equals(fromIp.trim())) {
fromIp = request.getHeader("X-Real-IP");
// logger.info("获取到用户的原始的X-Real-IP:{}", fromIp);
}


// 再获取用户的请求ip
if (StringUtils.isBlank(fromIp)) {
fromIp = request.getRemoteAddr();
// logger.info("获取到用户的RemoteIP:{}", fromIp);
}


// 取最前面的IP地址
String[] fromIpArr = fromIp.split(",");
if (fromIpArr.length > 0) {
fromIp = fromIpArr[0];
}


// logger.info("当前请求获取到用户的IP为:{}", fromIp);


if (StringUtils.isBlank(fromIp))
fromIp = EMPTY;


return fromIp;
}


/**
* 把IP地址转换成整型

* @param ipAddr
*            IP地址
* @return
* @create_time 2011-9-28 下午02:06:47
*/
public static int getIpIntByStr(String ipAddr) {
if (StringUtils.isBlank(ipAddr) || EMPTY.equals(ipAddr)) {
return 0;
}
StringTokenizer tokenizer = new StringTokenizer(ipAddr, ".");
int num = 0, i = -1;
while (tokenizer.hasMoreElements()) {
String value = (String) tokenizer.nextElement();
int power = 3 - (++i);
if (StringUtils.isNumeric(value)) {
num += ((Integer.valueOf(value) % 256 * Math.pow(256, power)));
}
}
return num;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值