`

java 判断ip是否属于一个网段

阅读更多
public class ipTest {
    /**
     * 判断IP是否在指定范围;
     */
     
    public static boolean ipIsValid(String ipSection, String ip) {
        if (ipSection == null)
            throw new NullPointerException("IP段不能为空!");
        if (ip == null)
            throw new NullPointerException("IP不能为空!");
        ipSection = ipSection.trim();
        ip = ip.trim();
        final String REGX_IP = "((25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)";
        final String REGX_IPB = REGX_IP + "\\-" + REGX_IP;
        if (!ipSection.matches(REGX_IPB) || !ip.matches(REGX_IP))
            return false;
        int idx = ipSection.indexOf('-');
        String[] sips = ipSection.substring(0, idx).split("\\.");
        String[] sipe = ipSection.substring(idx + 1).split("\\.");
        String[] sipt = ip.split("\\.");
        long ips = 0L, ipe = 0L, ipt = 0L;
        for (int i = 0; i < 4; ++i) {
            ips = ips << 8 | Integer.parseInt(sips[i]);
            ipe = ipe << 8 | Integer.parseInt(sipe[i]);
            ipt = ipt << 8 | Integer.parseInt(sipt[i]);
        }
        if (ips > ipe) {
            long t = ips;
            ips = ipe;
            ipe = t;
        }
        return ips <= ipt && ipt <= ipe;
    }
    public static void main(String[] args) {
        if (ipIsValid("192.168.1.1-192.168.1.10", "192.168.3.54")) {
            System.out.println("ip属于该网段");
        } else
            System.out.println("ip不属于该网段");
    }
}
分享到:
评论

相关推荐

    ip工具类(用于判断IP是否在网段内,给定网段判断IP的范围)

    ip工具类(用于判断IP是否在网段内,给定网段判断IP的范围)

    判断两个IP是否属于同一个子网(java)

    判断两个IP是否属于同一个子网(java) 简单代码

    java的ip常用工具类

    此工具类包含根据ip和掩码(cidr)计算网段 判断ip是否在网段内 判断是否是ip ip转long long类型的ip转string

    JAVA SWING 多线程实现扫描同一个网段的IP,以及选定IP的端口

    从扫描同一个网段的IP开始 逐步添加功能 现在还具有了扫描选定IP的常见TCP UDP端口 包括部分常见木马所使用端口 并可以自定义扫描端口 扫描同一网段的IP主要是用SHELL方法 使用PING命令并判断返回值内容 从而确定...

    java扫描网段

    下面,我们将基于给定的“部分内容”,深入分析一个具体的Java网络扫描实现案例。 ```java package steeven; // 导入必要的包 import java.sql.*; import java.io.*; import java.util.*; import java.text.*; ...

    IP地址段的过滤,限制ip,限制主机访问

    7. **IP子网掩码**:子网掩码用于确定IP地址中的网络部分和主机部分,对于IP段过滤,需要结合子网掩码来判断IP是否在指定的网段内。 8. **IP黑名单与白名单**:可以维护一个IP黑名单或白名单,前者包含不允许访问的...

    JAVA SWING 多线程扫描局域网IP及端口 shellping v2

    扫描同一个网段的IP 描选定IP的常见TCP UDP端口 包括部分常见木马所使用端口 并可以自定义扫描端口 扫描同一网段的IP主要是用SHELL方法 使用PING命令并判断返回值内容 从而确定服务器是否打开 扫描端口的原理是...

    zookeeper限制ip版

    Apache ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。Zookeeper 在微服务、大数据等领域的应用广泛,尤其在...

    基于Java判断网络是否正常代码实例

    "基于Java判断网络是否正常代码实例" 本篇文章主要介绍了基于Java判断网络是否正常代码实例,通过示例代码详细介绍了判断网络是否正常的方法,对大家的学习或者工作具有一定的参考学习价值。 知识点一:Java中判断...

    扫描整个网段的多线程程序

    `run`方法是线程执行的主要逻辑,它使用`Runtime.exec`执行操作系统级别的ping命令,然后读取命令的输出,根据结果判断IP是否可达。如果响应时间超过300毫秒或者返回"timed out",则认为IP不可达。 最后,`main`...

    JAVA网络编程从入门到精通

    互联网中的每一台设备都需要有一个唯一的标识符——IP地址。当前广泛使用的IPv4地址由四个字节组成,而未来的趋势是采用16个字节的IPv6地址。 **IPv4地址格式**:X.X.X.X,其中X代表0至255之间的数字。理论上,IPv4...

    飞鸽传书(IPMessenger) 源码

     这里需要特别注意的就是关于文件夹的传输,这个FreeEIM(飞鸽传书)一个难点,应为对与文件夹的内容是没有显示的,需要我们逐次的判断,在飞鸽传书中是这么处理的,如果是一个文件夹,就发送文件属性为IPMSG_FILE_...

    计算机网络课程设计报告-端口扫描器.doc

    本报告详细介绍了如何设计并实现一个基于TCP connect的端口扫描器,旨在加深对TCP/IP协议的理解,并掌握端口扫描的技术和原理。 1. **TCP/IP理解**: TCP/IP协议是互联网通信的基础,由网络接口层、网络层、传输层...

    网络课程设计实验报告-发现网络中活动的主机.docx

    在详细设计中,采用了Runtime类的exec()方法执行ping命令,通过BufferedReader读取并解析ping命令的输出,以判断IP是否活跃。设计过程中,使用流程图辅助理解程序逻辑。 在调试分析环节,面临的主要问题包括: 1. ...

    运维架构师笔记(简洁标签版) 下

    例如,IP地址***.***.***.***和***.***.***.***是否属于同一网段,需要看它们的网络号是否相同。如果相同,则属于同一网段。 ### Linux环境下的ULE服务、MySQL、Shell脚本 #### ULE服务 ULE基础与服务是与Linux...

    端口扫描程序的设计说明.doc

    3. **主机或网段扫描**:能够针对单个IP地址或一个IP地址范围进行扫描,这在排查整个网络的安全状况时非常有用。 4. **自定义端口范围扫描**:允许用户指定特定端口或端口范围,以针对特定服务进行扫描。 程序设计...

    Nginx服务器实现通过ip和user_gent限制访问的方法分析

    # 拒绝整个IP网段访问 deny 192.168.1.0/24; # 允许内网IP访问 allow 192.168.1.0/24; # 默认策略,所有其他未明确允许的IP都将被拒绝 deny all; ``` 上述配置中,Nginx会按照顺序检查`deny`和`allow`规则,一旦...

Global site tag (gtag.js) - Google Analytics