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

在java中判断是否在指定ip段内
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);   
    } 

你可能感兴趣的:(DAO,C++,c,servlet,C#)