用 JAVA 输出 IP 地址并判断是 A 类、B 类、C 类和 D 类

随着互联网的快速发展,IP 地址的重要性日益凸显。IP 地址是网络中主机和设备的唯一标识符,分为多个类别。本文将以 Java 为例,教你如何输出 IP 地址并判断其类别(A 类、B 类、C 类和 D 类)。

IP 地址基础知识

在讨论如何在 Java 中处理 IP 地址之前,让我们先了解一下 IP 地址的类别:

  • A 类地址:以 0.0.0.0 到 127.255.255.255 范围内的地址,主要用于大型网络。
  • B 类地址:以 128.0.0.0 到 191.255.255.255 范围内的地址,适合中型网络。
  • C 类地址:以 192.0.0.0 到 223.255.255.255 范围内的地址,适合小型网络。
  • D 类地址:以 224.0.0.0 到 239.255.255.255 范围内的地址,主要用于多播(multicast)。

下面我们通过 Java 代码来判断一个给定的 IP 地址属于哪一类。

Java 代码示例

下面的代码示范了如何实现一个简单的 IP 地址判断程序。

import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Scanner;

public class IPAddressClassifier {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入一个IP地址: ");
        String ip = scanner.nextLine();
        
        try {
            InetAddress address = InetAddress.getByName(ip);
            String[] octets = ip.split("\\.");
            if (octets.length != 4) {
                System.out.println("无效的IP地址格式");
                return;
            }
            int firstOctet = Integer.parseInt(octets[0]);

            // 判断IP地址类别
            if (firstOctet >= 0 && firstOctet <= 127) {
                System.out.println(ip + " 属于 A 类地址");
            } else if (firstOctet >= 128 && firstOctet <= 191) {
                System.out.println(ip + " 属于 B 类地址");
            } else if (firstOctet >= 192 && firstOctet <= 223) {
                System.out.println(ip + " 属于 C 类地址");
            } else if (firstOctet >= 224 && firstOctet <= 239) {
                System.out.println(ip + " 属于 D 类地址");
            } else {
                System.out.println(ip + " 是其他地址类型");
            }
        } catch (UnknownHostException e) {
            System.out.println("无效的IP地址");
        } catch (NumberFormatException e) {
            System.out.println("无效的IP地址格式");
        }

        scanner.close();
    }
}

代码解析

  1. 获取用户输入:我们使用 Scanner 类来获取用户输入的 IP 地址。
  2. 地址解析:使用 InetAddress.getByName(ip) 来解析用户输入的 IP 地址。
  3. 分割 IP 地址:使用 split("\\.") 方法将 IP 地址分割为四个八位字节(octet)。
  4. 判断类别:通过解析第一个八位字节的值范围来判断其类别。

ER 图

在编码过程中,可以使用实体关系图(ER 图)来描述数据之间的关系。以下是相关的 ER 图示例:

erDiagram
    IPAddress {
        string ipAddress PK
        string classType 
    }

在这个 ER 图中,我们定义了一个 IPAddress 实体,包含 ipAddressclassType 两个属性。 ipAddress 是主键,表示唯一的 IP 地址,classType 用于表示该地址属于哪一类。

旅行图

除了代码示例,我们还可以使用旅行图来描述 IP 地址的分类过程。以下是相应的旅行图示例:

journey
    title IP 地址分类流程
    section 用户输入
      用户输入 IP 地址: 5: 用户输入有效 IP
    section 地址判断
      判断第一八位字节: 5: IP 类别判断
      A 类: 3: 0-127
      B 类: 3: 128-191
      C 类: 3: 192-223
      D 类: 3: 224-239
      其他类型: 1: 240-255

在这个旅行图中,我们描绘了程序的执行流程,从用户输入 IP 地址到最终的地址分类的过程。

结尾

在今天的讨论中,我们了解了 IP 地址的基本知识,以及如何使用 Java 编写程序来判断 IP 地址的类型。随着互联网的不断发展,深入理解 IP 地址及其分类对于网络技术的学习和应用至关重要。希望本文的示例和说明能帮助你更好地理解这一概念,鼓励你在实际项目中加以实践与应用。