获取当前访问客户端的真实IP地址,辨别是否为内网?
来源:互联网 发布:智商和情商 知乎 编辑:程序博客网 时间:2024/06/12 01:27
Test.jsp 测试页面
TestAddress tsetadres = new TestAddress();
String addIP = request.getRemoteAddr();
if(!addIP.equals(""))
{
String relIp = tsetadres.getIpAddr(request);
boolean isTrue = tsetadres.isInnerIP(relIp);
if(isTrue == true)
{
//内网
......
}
else
{
//外网
........
}
}
TestAddress.java 测试类
public class TestAddres {
//获取客户端真实的IP
public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)
|| "null".equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)
|| "null".equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)
|| "null".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
//判断客户端IP地址是否为内网地址
public boolean isInnerIP(String ipAddress){
boolean isInnerIp = false;
long ipNum = getIpNum(ipAddress);
/**
私有IP:
A类 10.0.0.0-10.255.255.255
B类 172.16.0.0-172.31.255.255
C类 192.168.0.0-192.168.255.255
**/
long aBegin = getIpNum("10.0.0.0");
long aEnd = getIpNum("10.255.255.255");
long bBegin = getIpNum("172.16.0.0");
long bEnd = getIpNum("172.31.255.255");
long cBegin = getIpNum("192.168.0.0");
long cEnd = getIpNum("192.168.255.255");
isInnerIp = isInner(ipNum,aBegin,aEnd) || isInner(ipNum,bBegin,bEnd) || isInner(ipNum,cBegin,cEnd) || ipAddress.equals("127.0.0.1"); //访问本地localhost获取为127.0.0.1
return isInnerIp;
}
private static long getIpNum(String ipAddress) {
String [] ip = ipAddress.split("//.");
long a = Integer.parseInt(ip[0]);
long b = Integer.parseInt(ip[1]);
long c = Integer.parseInt(ip[2]);
long d = Integer.parseInt(ip[3]);
long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
return ipNum;
}
private static boolean isInner(long userIp,long begin,long end){
return (userIp>=begin) && (userIp<=end);
}
}
- 获取当前访问客户端的真实IP地址,辨别是否为内网?
- 获取当前访问客户端的真实IP地址(含内网地址)
- C#获取真实的客户端IP地址,包括内网代理
- C#获取真实的客户端IP地址,包括内网代理
- 获取客户端的真实IP地址
- 获取远程客户端的真实IP地址
- 获取客户端的真实IP地址
- 获取客户端的真实IP地址
- 获取客户端的真实IP地址
- java获取真实的客户端IP地址
- jfinal --获取客户端真实的ip地址
- Java获取客户端的真实IP地址
- Java获取客户端的真实IP地址
- PHP 获取客户端真实的ip地址
- Java获取客户端的真实IP地址
- Java获取客户端的真实IP地址
- Java获取客户端的真实IP地址
- 获取真实的客户端IP地址
- 虚拟机操作系统移植之后记得把IP改过来
- 避免Eclipse经常出现Out Of Memory
- SQLite3 - 数据库临时文件
- TOMCAT 7新特性
- arm中各始终之间的关系,FCLK HCLK PCLK的关系
- 获取当前访问客户端的真实IP地址,辨别是否为内网?
- Oracle 存储过程基本语法简介
- csdn
- 360正在扼杀中国共享软件
- 有两种方式构建软件设计:一种是把软件做得很简单以至于明显找不到缺陷;另一种是把它做得很复杂以至于找不到明显的缺陷。
- 物理Data Guard 下Failover 时Redo 的处理问题
- 利用udev在/dev下动态生成/移除设备文件
- goahead webserver源码分析
- gridview中实现合计