今天发文一篇较为简单,且文档满天飞的获取IP地址的java代码,可能很多小白们不一定能找到完整兼容的方法,故在此送给小白们一份干货。

此文也是为了接下来的时间里,我将会写一篇使用HTML5技术扫描PC二维码且在WAP端实现可上传图片或视频的文档,这里会运用到根据参数动态生成二维码和传输文件的技术,也会应用到ip及端口的东西。

下面是运用java代码判断当前客服端IP地址的逻辑:

private String getInternetIp(HttpServletRequest request) {
		String ip = StringUtils.getNullBlankStr(request.getHeader("x-forwarded-for"));
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = StringUtils.getNullBlankStr(request.getHeader("Proxy-Client-IP"));
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = StringUtils.getNullBlankStr(request.getHeader("WL-Proxy-Client-IP"));
		}
		if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
			ip = StringUtils.getNullBlankStr(request.getRemoteAddr());
		}
		if ("127.0.0.1".equals(ip)) {
			// 根据网卡取本机配置的IP
			InetAddress inet = null;
			try {
				inet = InetAddress.getLocalHost();
			} catch (Exception e) {
				e.printStackTrace();
			}
			ip = StringUtils.getNullBlankStr(inet.getHostAddress());
		}
		// 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
		if (ip != null && ip.length() > 15) { // "***.***.***.***".length() = 15
			if (ip.indexOf(",") > 0) {
				ip = ip.substring(0, ip.indexOf(","));
			}
		}
		return ip;
	}


由于本地往往会应用localhost或127.0.0.1的端口进行开发和测试,故该java代码有效的为我们进行了网口的校验,提高了效率。

接下来的时间正如上文所说的,我会抽个时间写一篇使用HTML5技术扫描PC二维码且在WAP端实现可上传图片或视频的文档,将会提供完整代码给各位同僚们,谢谢。