Java子网计算器:自动划分网络地址

本程序使用Java语言编写,可以根据用户输入的网络地址、子网掩码和主机数,自动计算出可划分出的网段数目、网段地址、子网掩码和每个子网最大容纳的主机数。

功能要求:

  • 输入网络地址和子网掩码。
  • 输入符合要求的主机数目。
  • 自动计算出在本网段中可划分出的网段数目、网段地址、子网掩码和本子网段最大容纳的主机数。

Java完整程序内容:

import java.util.Scanner;

public class SubnetCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print('Enter network address: ');
        String networkAddress = scanner.nextLine();
        
        System.out.print('Enter subnet mask: ');
        String subnetMask = scanner.nextLine();
        
        System.out.print('Enter number of hosts: ');
        int numberOfHosts = scanner.nextInt();
        
        int subnetBits = calculateSubnetBits(numberOfHosts);
        int numberOfSubnets = (int) Math.pow(2, subnetBits);
        
        String[] networkAddressParts = networkAddress.split('\.');
        String[] subnetMaskParts = subnetMask.split('\.');
        
        int[] networkAddressInts = new int[4];
        int[] subnetMaskInts = new int[4];
        
        for (int i = 0; i < 4; i++) {
            networkAddressInts[i] = Integer.parseInt(networkAddressParts[i]);
            subnetMaskInts[i] = Integer.parseInt(subnetMaskParts[i]);
        }
        
        int[] subnetAddressInts = calculateSubnetAddress(networkAddressInts, subnetMaskInts);
        
        String subnetAddress = subnetAddressInts[0] + '.' + subnetAddressInts[1] + '.' + subnetAddressInts[2] + '.' + subnetAddressInts[3];
        
        int hostBits = 32 - subnetBits;
        int numberOfUsableHosts = (int) Math.pow(2, hostBits) - 2;
        
        System.out.println('Number of subnets: ' + numberOfSubnets);
        System.out.println('Subnet address: ' + subnetAddress);
        System.out.println('Subnet mask: ' + subnetMask);
        System.out.println('Maximum number of hosts per subnet: ' + numberOfUsableHosts);
    }
    
    private static int calculateSubnetBits(int numberOfHosts) {
        int subnetBits = 0;
        int requiredHosts = numberOfHosts + 2;
        
        while (Math.pow(2, subnetBits) < requiredHosts) {
            subnetBits++;
        }
        
        return subnetBits;
    }
    
    private static int[] calculateSubnetAddress(int[] networkAddress, int[] subnetMask) {
        int[] subnetAddress = new int[4];
        
        for (int i = 0; i < 4; i++) {
            subnetAddress[i] = networkAddress[i] & subnetMask[i];
        }
        
        return subnetAddress;
    }
}

程序流程:

  1. 获取用户输入的网络地址、子网掩码和主机数目。
  2. 计算出所需的子网位数和可划分的网段数目。
  3. 将输入的网络地址和子网掩码转换为整数数组,以便进行计算。
  4. 计算出子网地址。
  5. 根据子网位数计算出每个子网最大容纳的主机数。
  6. 打印出计算结果。

使用方法:

  1. 运行程序。
  2. 按照提示输入网络地址、子网掩码和主机数目。
  3. 程序将输出计算结果。
Java子网计算器:自动划分网络地址

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

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