java獲取ip爲0:0:0:0:0:0:0:1的問題

0:0:0:0:0:0:0:1是ipv6的表現形式,對應ipv4來講至關於127.0.0.1,也就是本機 java

若是項目部署在本機win7系統,訪問時是經過 localhost 來訪問, 服務器

用java獲取ip地址可能會出現該問題,這時獲取的ip將是 0:0:0:0:0:0:0:1 url

 

要是機器在局域網中,訪問時使用本身的ip訪問,如 個人ip是 :192.168.123.156 code

訪問url:http://192.168.123.156:8080/test ip

這時候請求會通過路由器轉發,因此服務器獲取的就是本機的局域網內ip,在java中獲取的ip就是 192.168.123.156了 路由

 

下面幾個獲取ip的方法: 部署

 

public static String getIP(HttpServletRequest request) {
		String ip = request.getHeader("x-forwarded-for");
		if (!checkIP(ip)) {
			ip = request.getHeader("Proxy-Client-IP");
		}
		if (!checkIP(ip)) {
			ip = request.getHeader("WL-Proxy-Client-IP");
		}
		if (!checkIP(ip)) {
			ip = request.getRemoteAddr();
		}
		return ip;
	}
	private static boolean checkIP(String ip) {
		if (ip == null || ip.length() == 0 || "unkown".equalsIgnoreCase(ip)
				|| ip.split(".").length != 4) {
			return false;
		}
		return true;
	}
相關文章
相關標籤/搜索