Java获取ip地址

Posted zengweib208

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java获取ip地址相关的知识,希望对你有一定的参考价值。

package utils;

import com.alibaba.druid.util.StringUtils;
import javax.servlet.http.HttpServletRequest;

/**
 * IP地址
 * 
 * @author zengwei
 * @email [email protected]
 * @date 2018-03-23 22:02
 */
public class IPUtils {

  /**
   * 获取IP地址
   * 
   * 使用nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址
   * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,
   * X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
   */
  public static String getIpAddr(HttpServletRequest request) {
    String ip = null;
    try {
      ip = request.getHeader("x-forwarded-for");
      if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("Proxy-Client-IP");
      }
      if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("WL-Proxy-Client-IP");
      }
      if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("HTTP_CLIENT_IP");
      }
      if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("HTTP_X_FORWARDED_FOR");
      }
      if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getRemoteAddr();
      }
    } catch (Exception e) {

    }
    return ip;
  }

}
  

  

以上是关于Java获取ip地址的主要内容,如果未能解决你的问题,请参考以下文章

JAVA怎么获取IP地址

JAVA怎么获取IP地址

java代码实现由request请求消息获取远处发送请求的用户主机的内网IP地址和外网IP地址

使用Java技术获取客户端的IP地址

Java获取本机的ip地址

java获取当前用户的IP地址代码!怎么样调用的?初学者!希望大家多多的帮帮忙!!