`
shuai1234
  • 浏览: 963398 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

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

    博客分类:
  • java
 
阅读更多
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);      
    }      
     
}    

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字符串 
Js代码  
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 ...

    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和结束...

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

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

    易语言统计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地址解析...

    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地址未响应,系统会记录下断线时间,并将这些信息保存在日志文件中。日志文件对于故障排查和分析网络问题至关重要,因为它...

    易语言IP段端口扫描源码

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

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

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

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

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

    IP批量检测+python跑IP段

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

    自动扫描ip段端口ipscan

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

    易语言计算IP段源码.rar

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

Global site tag (gtag.js) - Google Analytics