1. 程式人生 > >java IP地址工具類,java IP地址獲取,java獲取客戶端IP地址

java IP地址工具類,java IP地址獲取,java獲取客戶端IP地址

java IP地址工具類,java IP地址獲取,java獲取客戶端IP地址

 

================================

©Copyright 蕃薯耀 2019年1月11日

http://fanshuyao.iteye.com/

 

import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;

import javax.servlet.http.HttpServletRequest;

public class IpUtils {

	private static final String[] HEADERS = { 
        "X-Forwarded-For",
        "Proxy-Client-IP",
        "WL-Proxy-Client-IP",
        "HTTP_X_FORWARDED_FOR",
        "HTTP_X_FORWARDED",
        "HTTP_X_CLUSTER_CLIENT_IP",
        "HTTP_CLIENT_IP",
        "HTTP_FORWARDED_FOR",
        "HTTP_FORWARDED",
        "HTTP_VIA",
        "REMOTE_ADDR",
        "X-Real-IP"
	};
	
	/**
	 * 判斷ip是否為空,空返回true
	 * @param ip
	 * @return
	 */
	public static boolean isEmptyIp(final String ip){
        return (ip == null || ip.length() == 0 || ip.trim().equals("") || "unknown".equalsIgnoreCase(ip));
    }
	
	
	/**
	 * 判斷ip是否不為空,不為空返回true
	 * @param ip
	 * @return
	 */
	public static boolean isNotEmptyIp(final String ip){
        return !isEmptyIp(ip);
    }
	
	/***
     * 獲取客戶端ip地址(可以穿透代理)
     * @param request HttpServletRequest
     * @return
     */
    public static String getIpAddress(HttpServletRequest request) {
    	String ip = "";
    	for (String header : HEADERS) {
            ip = request.getHeader(header);
            if(isNotEmptyIp(ip)) {
            	 break;
            }
        }
        if(isEmptyIp(ip)){
        	ip = request.getRemoteAddr();
        }
        if(isNotEmptyIp(ip) && ip.contains(",")){
        	ip = ip.split(",")[0];
        }
        if("0:0:0:0:0:0:0:1".equals(ip)){
            ip = "127.0.0.1";
        }
        return ip;
    }
	
    
    /**
	 * 獲取本機的區域網ip地址,相容Linux
	 * @return String
	 * @throws Exception
	 */
	public String getLocalHostIP() throws Exception{
		Enumeration<NetworkInterface> allNetInterfaces = NetworkInterface.getNetworkInterfaces();
		String localHostAddress = "";
		while(allNetInterfaces.hasMoreElements()){
			NetworkInterface networkInterface = allNetInterfaces.nextElement();
			Enumeration<InetAddress> address = networkInterface.getInetAddresses();
			while(address.hasMoreElements()){
				InetAddress inetAddress = address.nextElement();
				if(inetAddress != null && inetAddress instanceof Inet4Address){
					localHostAddress = inetAddress.getHostAddress();
				}
			}
		}
		return localHostAddress;
	}
	
	
}

 

 

================================

©Copyright 蕃薯耀 2019年1月11日

http://fanshuyao.iteye.com/