在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);
}
分享到:
相关推荐
### 编写程序判断一个IP地址是否合法,并判断该地址是否属于一个给定的子网 #### 一、课程设计目的与要求 本课程设计的主要目的是通过编写一个程序来检验学习者对于IP地址概念及子网划分的理解程度。具体来说,程序...
3. **比较子网与IP地址**:对子网和IP地址分别应用子网掩码,然后比较结果是否一致来判断IP地址是否属于指定的子网。 #### 四、示例代码片段分析 下面是一些关键代码片段的分析: ```java public static boolean ...
每个IP地址都与特定的地理位置相关联。 - 为了将IP地址与国家或地区对应,我们需要IP数据库。例如,`ipdata.db`可能是这样的数据库,它存储了IP范围和对应的地理位置信息。 2. **IP地址分类**: - IP地址分为IPv4...
3. `isIn($startIp, $endIp, $ip)`:判断一个IP地址是否在指定的IP段内。此方法接收开始IP和结束IP(都是字符串格式),以及待检测的IP地址。它先将所有IP地址转换为整数,然后比较待检测的IP地址是否在开始IP和结束...
本文将详细介绍如何通过Shell脚本实现IP地址是否在一个指定的IP段内的判断,并提供具体的实现代码。 #### 关键概念解释 1. **IP地址**:Internet Protocol Address,用于唯一标识互联网上的设备。IPv4地址由四个十...
4. **循环与条件判断**:通过循环遍历IP地址段,判断每个IP是否在指定范围内,这需要用到易语言的循环控制结构和条件语句。 5. **数组操作**:在处理多个IP地址时,可能需要使用数组存储,进行数组遍历、查找、排序...
- 使用位操作(AND 运算)判断 IP 地址是否属于指定子网。 #### 四、代码实现 下面是基于以上分析的代码实现示例: ```java public class IpTest { public static void main(String[] args) { // 参数检查 if...
2. **IP地址范围判断**:在编程或网络管理中,我们可能需要检查一个IP地址是否落在特定的IP地址范围内,比如确定某个IP是否属于某个网络段。这可以通过将IP地址转换为整数比较其数值范围来实现,或者使用IP地址解析...
在C#编程中,有时我们需要判断一个给定的IP...总的来说,掌握如何在C#中判断IP地址是否在指定范围内是一项基础但重要的技能,这在处理网络数据或实现网络功能时非常有用。希望上述内容能帮助到正在学习C#编程的朋友们。
5. **IP与子网掩码的比较**: 判断IP是否在子网内,首先需要将IP地址和子网掩码都转换为二进制,然后执行位与操作。如果得到的结果与子网的网络部分相同,那么IP地址就属于该子网。例如: ```java int ipInt = ...
这类工具通常使用端口扫描技术,通过发送特定的网络请求到指定的IP地址并分析响应来判断IP是否在线。例如,它可能会发送TCP SYN包到目标IP的常用端口(如80、443、22等),如果收到响应,则认为该IP被占用;若无响应...
程序需要验证输入的IP地址格式是否正确,同时还要判断这个IP地址是否属于由子网地址和子网掩码定义的网络段内。 实现这个功能,首先需要解析输入的IP地址和子网掩码,将其从点分十进制转换为二进制形式。然后,通过...
它能周期性地发送ping请求到指定的IP地址,通过响应时间来判断网络连接是否正常。如果某IP地址未响应,系统会记录下断线时间,并将这些信息保存在日志文件中。日志文件对于故障排查和分析网络问题至关重要,因为它...
【易语言IP段端口扫描源码】是一个用于网络扫描的程序,主要功能是检查指定的IP地址范围内的端口是否开放。在IT领域,端口扫描是网络安全和系统管理员常用的工具,它可以帮助识别网络上的服务、漏洞以及潜在的安全...
接着,使用该`Pattern`对象创建了一个`Matcher`对象,并调用其`matches()`方法来判断IP地址是否符合指定的正则表达式模式。如果返回`true`,则表示输入的IP地址是有效的;反之,则无效。 ### 总结 通过上述分析和...
在Python中,我们可以使用`os.system()`或者`subprocess`模块来调用操作系统内置的ping命令,对每个IP执行ping操作并捕获结果。根据返回值,我们可以判断IP是否响应。此外,还可以使用第三方库如`ping3`来简化ping...
标题中的“自动扫描ip段端口ipscan”指的是一个用于网络安全和网络管理的工具,它能够自动扫描指定IP地址范围内的所有端口,以检测网络连接的状态和安全性。这个工具通常被系统管理员用来查找开放的端口、识别可能的...
标题 "Ping指定IP并输出带每条Ping记录时间的文档" 涉及到的是网络诊断中的一个常见操作,即使用Ping命令来测试网络连通性,并将结果详细记录下来。Ping是Internet控制报文协议(ICMP)的一部分,用于网络诊断,通过...
则...”)来判断某个IP地址是否在指定的IP段内。 5. 循环:在处理大量IP地址或IP段时,可能会用到循环结构,如“循环”、“直到”等,遍历IP地址范围。 6. 文件操作:压缩包内的"源码使用说明.txt"可能是对源代码的...