`

获取IP地址或客户端IP地址

 
阅读更多

获取ip地址本机的:

	@Test
	public  void testIp() throws Exception{
		Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces();
		InetAddress ip = null;
		while (allNetInterfaces.hasMoreElements()) {
			NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
			Enumeration addresses = netInterface.getInetAddresses();
			while (addresses.hasMoreElements()) {
				ip = (InetAddress) addresses.nextElement();
				if (ip != null && ip instanceof Inet4Address) {
					if(!ip.getHostAddress().equals("127.0.0.1")){
						AppServerInfo appServerInfo=new AppServerInfo();
						appServerInfo.setIp(ip.getHostAddress());
						appServerInfo.setCurrentDatetime(new Date(System.currentTimeMillis()));
						appServerInfo.setServerName(System.getProperty("user.name"));
						System.out.println(Utils.getGson().toJson(appServerInfo));
					}
				}
			}
		}
	}

 

 

获取客户端IP地址

public void getRealIp(HttpServletRequest request){
		
		//可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,
		//究竟哪个才是真正的用户端的真实IP呢?答案是取 X-Forwarded-For中第一个非unknown的有效IP字符串。
		//如: X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100 用户真实IP为: 192.168.1.110
		
	    String ip = null;
	    
	    if(ip == null || ip.length() == 0 || "unknown" .equalsIgnoreCase(ip)){
	    	ip = request.getHeader("x-forwarded-for" );
	    }
	    
	    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();
	    }
	}

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics