`
minzaipiao
  • 浏览: 148575 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

判断每个ip是否在以个指定的IP段内

    博客分类:
  • Java
阅读更多
package com.tiansong.infosafetranflag.safe.www;

import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.tiansong.infosafetranflag.safe.system.entity.IPItem;
import com.tiansong.infosafetranflag.safe.system.service.IPItemService;
import com.tiansong.infosafetranflag.safe.system.service.ServiceFactory;
import com.tiansong.infosafetranflag.safe.system.service.dao.DAOServiceFactory;

public class RemoteHostFilter implements Filter {

	public RemoteHostFilter() {
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpServletResponse resp = (HttpServletResponse) response;
		// 取得本机的IP地址
		//InetAddress localAddress = InetAddress.getLocalHost();

		//String ipAddress = localAddress.getHostAddress();
		
		String ipAddress = req.getRemoteHost();
System.out.println(ipAddress);
		long ip = getIpNum(ipAddress);

		ServiceFactory factory = new DAOServiceFactory();
		try {
			IPItemService ipService = factory.createIPItemService();

			// 从数据库中取出所有的IP段
			List ipList = ipService.getAllIPItem();
			if (ipList.size() > 0 && ipList != null) {
				for (Iterator it = ipList.iterator(); it.hasNext();) {
					IPItem item = (IPItem) it.next();
					String startIp = item.getStartIp();
					String endIp = item.getEndIp();
					long start_ip = getIpNum(startIp);
					long end_ip = getIpNum(endIp);

					if (isInner(ip, start_ip, end_ip)) {
						if (item.getStatus().equals("1")
								|| item.getStatus().equals("true")) {
							//System.out.println("你的IP已被屏蔽,请跟管理员联系!");
							//resp.sendError(404);
							resp.sendRedirect(req.getContextPath()
									+ "/NoSecurity.html");
							return;
						}
					}
				}
			}

		} catch (Exception e) {
		}
		chain.doFilter(request, response);
	}

	public void destroy() {

	}

	public void init(FilterConfig filterConfig) {

	}

	/**
	 * 分割IP
	 * 
	 * @param ipAddress
	 * @return
	 */
	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;
	}

	/**
	 * 判断客户端的IP是否在某个ip段中
	 * 
	 * @param clientIp
	 *            客户端的IP
	 * @param begin
	 *            开始IP
	 * @param end
	 *            结束IP
	 * @return
	 */
	private static boolean isInner(long clientIp, long begin, long end) {
		return (clientIp >= begin) && (clientIp <= end);
	}

}




js检测IP
function iptest(v){
        var ip = /^([1-9][0-9]{0,1}|1[013-9][0-9]|12[0-689]|2[01][0-9]|22[0-3])([.]([1-9]{0,1}[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){2}[.]([1-9][0-9]{0,1}|1[0-9]{2}|2[0-4][0-9]|25[0-4])$/;
        return ip.test(v);
    }

分享到:
评论

相关推荐

    编写程序判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网

    ### 编写程序判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网 #### 一、课程设计目的与要求 本课程设计的主要目的是通过编写一个程序来检验学习者对于IP地址概念及子网划分的理解程度。具体来说,程序...

    判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网。

    3. **比较子网与IP地址**:对子网和IP地址分别应用子网掩码,然后比较结果是否一致来判断IP地址是否属于指定的子网。 #### 四、示例代码片段分析 下面是一些关键代码片段的分析: ```java public static boolean ...

    Shell脚本实现判断IP地址是否在一个ip段内代码分享

    本文将详细介绍如何通过Shell脚本实现IP地址是否在一个指定的IP段内的判断,并提供具体的实现代码。 #### 关键概念解释 1. **IP地址**:Internet Protocol Address,用于唯一标识互联网上的设备。IPv4地址由四个十...

    php判断IP为国内国外

    每个IP地址都与特定的地理位置相关联。 - 为了将IP地址与国家或地区对应,我们需要IP数据库。例如,`ipdata.db`可能是这样的数据库,它存储了IP范围和对应的地理位置信息。 2. **IP地址分类**: - IP地址分为IPv4...

    php判断IP地址是否在多个IP段内

    3. `isIn($startIp, $endIp, $ip)`:判断一个IP地址是否在指定的IP段内。此方法接收开始IP和结束IP(都是字符串格式),以及待检测的IP地址。它先将所有IP地址转换为整数,然后比较待检测的IP地址是否在开始IP和结束...

    易语言统计IP段适合扫描IP用

    4. **循环与条件判断**:通过循环遍历IP地址段,判断每个IP是否在指定范围内,这需要用到易语言的循环控制结构和条件语句。 5. **数组操作**:在处理多个IP地址时,可能需要使用数组存储,进行数组遍历、查找、排序...

    java编写的: 编写程序,判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网。

    - 使用位操作(AND 运算)判断 IP 地址是否属于指定子网。 #### 四、代码实现 下面是基于以上分析的代码实现示例: ```java public class IpTest { public static void main(String[] args) { // 参数检查 if...

    ip地址范围判断

    2. **IP地址范围判断**:在编程或网络管理中,我们可能需要检查一个IP地址是否落在特定的IP地址范围内,比如确定某个IP是否属于某个网络段。这可以通过将IP地址转换为整数比较其数值范围来实现,或者使用IP地址解析...

    易语言IP段端口扫描源码

    【易语言IP段端口扫描源码】是一个用于网络扫描的程序,主要功能是检查指定的IP地址范围内的端口是否开放。在IT领域,端口扫描是网络安全和系统管理员常用的工具,它可以帮助识别网络上的服务、漏洞以及潜在的安全...

    C#判断给定IP地址是否在指定范围内的方法

    在C#编程中,有时我们需要判断一个给定的IP...总的来说,掌握如何在C#中判断IP地址是否在指定范围内是一项基础但重要的技能,这在处理网络数据或实现网络功能时非常有用。希望上述内容能帮助到正在学习C#编程的朋友们。

    javaSE界面代码 判断一个IP地址是否合法

    5. **IP与子网掩码的比较**: 判断IP是否在子网内,首先需要将IP地址和子网掩码都转换为二进制,然后执行位与操作。如果得到的结果与子网的网络部分相同,那么IP地址就属于该子网。例如: ```java int ipInt = ...

    IP段扫描工具

    这类工具通常使用端口扫描技术,通过发送特定的网络请求到指定的IP地址并分析响应来判断IP是否在线。例如,它可能会发送TCP SYN包到目标IP的常用端口(如80、443、22等),如果收到响应,则认为该IP被占用;若无响应...

    计算机网络课设-判断一个IP地址是否合法.doc

    程序需要验证输入的IP地址格式是否正确,同时还要判断这个IP地址是否属于由子网地址和子网掩码定义的网络段内。 实现这个功能,首先需要解析输入的IP地址和子网掩码,将其从点分十进制转换为二进制形式。然后,通过...

    掉线报警 检测多个IP地址通断

    它能周期性地发送ping请求到指定的IP地址,通过响应时间来判断网络连接是否正常。如果某IP地址未响应,系统会记录下断线时间,并将这些信息保存在日志文件中。日志文件对于故障排查和分析网络问题至关重要,因为它...

    android验证ip地址的正则表达式

    接着,使用该`Pattern`对象创建了一个`Matcher`对象,并调用其`matches()`方法来判断IP地址是否符合指定的正则表达式模式。如果返回`true`,则表示输入的IP地址是有效的;反之,则无效。 ### 总结 通过上述分析和...

    IP批量检测+python跑IP段

    在Python中,我们可以使用`os.system()`或者`subprocess`模块来调用操作系统内置的ping命令,对每个IP执行ping操作并捕获结果。根据返回值,我们可以判断IP是否响应。此外,还可以使用第三方库如`ping3`来简化ping...

    自动扫描ip段端口ipscan

    标题中的“自动扫描ip段端口ipscan”指的是一个用于网络安全和网络管理的工具,它能够自动扫描指定IP地址范围内的所有端口,以检测网络连接的状态和安全性。这个工具通常被系统管理员用来查找开放的端口、识别可能的...

    Ping指定IP并输出带每条Ping记录时间的文档

    标题 "Ping指定IP并输出带每条Ping记录时间的文档" 涉及到的是网络诊断中的一个常见操作,即使用Ping命令来测试网络连通性,并将结果详细记录下来。Ping是Internet控制报文协议(ICMP)的一部分,用于网络诊断,通过...

    易语言计算IP段源码.rar

    则...”)来判断某个IP地址是否在指定的IP段内。 5. 循环:在处理大量IP地址或IP段时,可能会用到循环结构,如“循环”、“直到”等,遍历IP地址范围。 6. 文件操作:压缩包内的"源码使用说明.txt"可能是对源代码的...

Global site tag (gtag.js) - Google Analytics