Java 判断 IP 范围合法性

在网络编程中,验证 IP 地址的合法性是一项基本而重要的任务。本文将通过一个简单的例子,教你如何用 Java 判断 IP 范围是否合法。我们将通过几个步骤来实现这个功能,具体流程如下:

步骤描述
步骤1定义一个 IP 类,用于存储和处理 IP 地址
步骤2实现方法来判断某个 IP 地址是否在指定的范围内
步骤3测试代码,确保功能正常

接下来,我们逐步实现每个步骤。

步骤1: 定义 IP 类

首先,我们需要创建一个名为 IPRange 的类,用于包含 IP 地址的起始和结束范围。

public class IPRange {
    private String startIP; // 起始 IP 地址
    private String endIP;   // 结束 IP 地址

    public IPRange(String startIP, String endIP) {
        this.startIP = startIP;
        this.endIP = endIP;
    }

    // Getters
    public String getStartIP() {
        return startIP;
    }

    public String getEndIP() {
        return endIP;
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.

这段代码定义了 IPRange 类,并包含了两个属性:startIPendIP。构造函数用于初始化这两个属性。

步骤2: 判断 IP 是否在范围内

我们需要实现一个方法来判断某个 IP 地址是否在我们定义的范围内。为了方便比较,我们将 IP 地址转换为整数。

public class IPValidator {
    
    // 将 IP 地址转换为整数
    private static long ipToLong(String ip) {
        String[] octets = ip.split("\\.");
        long result = 0;
        for (int i = 0; i < 4; i++) {
            result += (Integer.parseInt(octets[i]) % 256) * Math.pow(256, 3 - i);
        }
        return result;
    }

    // 判断某个 IP 地址是否在给定范围内
    public static boolean isIPInRange(String ip, IPRange range) {
        long ipLong = ipToLong(ip);
        long startLong = ipToLong(range.getStartIP());
        long endLong = ipToLong(range.getEndIP());
        
        return ipLong >= startLong && ipLong <= endLong;
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.

IPValidator 类中,我们实现了 ipToLong 方法用于将 IP 地址转换为长整型。 isIPInRange 方法用于判断给定的 IP 是否在指定的范围内。

步骤3: 测试代码

最后,我们可以编写一些测试代码来验证我们的实现。

public class Main {
    public static void main(String[] args) {
        IPRange range = new IPRange("192.168.1.1", "192.168.1.255");
        String ipToCheck = "192.168.1.100";
        
        if (IPValidator.isIPInRange(ipToCheck, range)) {
            System.out.println(ipToCheck + " 是在范围内的合法 IP 地址.");
        } else {
            System.out.println(ipToCheck + " 不是在范围内的合法 IP 地址.");
        }
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

这里我们创建一个 IPRange 实例,并使用 IPValidator 类中的方法来验证 ipToCheck 是否在这个范围内。输出结果会告诉我们该 IP 地址是否合法。

状态图

我们可以使用状态图来表示IP地址验证的状态变化:

合法 非法 输入IP 判断范围 在范围内 不在范围内

类图

以下是我们实现的类结构图:

IPRange +String startIP +String endIP +IPRange(String startIP, String endIP) +String getStartIP() +String getEndIP() IPValidator +static long ipToLong(String ip) +static boolean isIPInRange(String ip, IPRange range) Main +static void main(String[] args)

结尾

通过以上的步骤和代码示例,你已经学会了如何在 Java 中判断 IP 范围是否合法。这种方法简单而有效,可以应用于多种网络编程场景。希望这篇文章对你有所帮助,期待你在后续的学习和开发中继续进步!