IP数据报头分析程序:解析源地址和目的地址

这是一个Java程序,可以解析IP数据报头,并以点分十进制形式输出源地址和目的地址。该程序接受20字节的二进制形式的IP数据报头作为输入,并提取源地址和目的地址字段,将它们转换为点分十进制表示。

程序代码:

import java.util.Scanner;

public class IPHeaderAnalyzer {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println('请输入IP数据报头(20字节,二进制形式):');
        String binaryHeader = scanner.nextLine();

        // 检查输入是否为20字节二进制数据
        if (binaryHeader.length() != 160) {
            System.out.println('输入的数据报头长度不正确!');
            return;
        }

        // 提取源地址和目的地址
        String sourceAddressBinary = binaryHeader.substring(64, 96);
        String destinationAddressBinary = binaryHeader.substring(96, 128);

        // 转换为点分十进制表示
        String sourceAddressDecimal = convertBinaryToDecimal(sourceAddressBinary);
        String destinationAddressDecimal = convertBinaryToDecimal(destinationAddressBinary);

        // 输出结果
        System.out.println('源地址:' + sourceAddressDecimal);
        System.out.println('目的地址:' + destinationAddressDecimal);
    }

    // 将二进制转换为十进制
    public static String convertBinaryToDecimal(String binary) {
        StringBuilder decimal = new StringBuilder();
        for (int i = 0; i < binary.length(); i += 8) {
            String octetBinary = binary.substring(i, i + 8);
            int octetDecimal = Integer.parseInt(octetBinary, 2);
            decimal.append(octetDecimal);
            if (i < binary.length() - 8) {
                decimal.append('.');
            }
        }
        return decimal.toString();
    }
}

使用示例:

输入IP数据报头(二进制形式,20字节):

0100101000000001011000110000000100000000000000001111111111111000

输出结果:

源地址:74.0.51.128
目的地址:128.0.255.248

说明:

  • 该程序使用 Scanner 类从用户那里获取输入的IP数据报头。
  • 程序检查输入数据是否为20字节二进制数据,如果不是,则会输出错误信息并退出。
  • 程序提取源地址和目的地址字段,并使用 convertBinaryToDecimal 方法将其转换为点分十进制表示。
  • convertBinaryToDecimal 方法将二进制字符串分成八位字节,并将每个字节转换为十进制数,然后以点分十进制形式拼接在一起。

程序下载:

IPHeaderAnalyzer.java


原文地址: https://www.cveoy.top/t/topic/d4Z5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录