Java子网计算器:自动划分网络地址
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;
}
}
程序流程:
- 获取用户输入的网络地址、子网掩码和主机数目。
- 计算出所需的子网位数和可划分的网段数目。
- 将输入的网络地址和子网掩码转换为整数数组,以便进行计算。
- 计算出子网地址。
- 根据子网位数计算出每个子网最大容纳的主机数。
- 打印出计算结果。
使用方法:
- 运行程序。
- 按照提示输入网络地址、子网掩码和主机数目。
- 程序将输出计算结果。
原文地址: http://www.cveoy.top/t/topic/bWw4 著作权归作者所有。请勿转载和采集!