Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- class IPv4 {
- private StringBuilder mask, network, broadcast, binaryIP;
- private IPv4(String ip, int masklen) {
- mask = new StringBuilder();
- network = new StringBuilder();
- broadcast = new StringBuilder();
- binaryIP = this.binaryConversion(ip.split("\\."));
- for(int i = 0; i < 32; i++) {
- if (i < masklen) mask.append(1);
- else mask.append(0);
- if(mask.charAt(i) == '1' && binaryIP.charAt(i) == '1') network.append(1);
- else network.append(0);
- if (i < masklen) broadcast.append(network.charAt(i));
- else broadcast.append(1);
- }
- }
- private void printOut(StringBuilder str) {
- for(int i = 0; i < 4; i++) {
- System.out.print(str.substring(i*8, (i+1)*8) + '.');
- if (i != 3) System.out.print('.');
- }
- System.out.print(" / " + decimalConversion(str));
- }
- private StringBuilder decimalConversion(StringBuilder str) {
- StringBuilder decimal = new StringBuilder();
- for(int i = 0; i < 4; i++) {
- decimal.append(Integer.parseInt(str.substring(i*8, (i+1)*8), 2));
- if (i != 3) decimal.append('.');
- }
- return decimal;
- }
- private StringBuilder binaryConversion(String[] decimal) {
- if(decimal.length != 4) throw new RuntimeException("Invalid IPv4!");
- StringBuilder binary = new StringBuilder();
- for (String string : decimal) {
- int octet = Integer.parseInt(string);
- if(octet < 0 || octet > 255) throw new RuntimeException("Invalid IPv4!");
- StringBuilder binaryOctet = new StringBuilder(Integer.toBinaryString(octet));
- while (binaryOctet.length() < 8)
- binaryOctet.insert(0, "0");
- binary.append(binaryOctet.toString());
- }
- return binary;
- }
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- System.out.println("Please enter an IPv4 address in dot-decimal notation:");
- String ip = in.nextLine();
- System.out.println("Please enter a mask length:");
- int masklen = Integer.parseInt(in.nextLine());
- if(masklen < 1 || masklen > 31) throw new RuntimeException("Invalid mask length!");
- IPv4 IP = new IPv4(ip, masklen);
- System.out.println("\nAddresses in binary / dot-decimal notation:");
- System.out.print("\nIP: ");
- IP.printOut(IP.binaryIP);
- System.out.print("\nMask: ");
- IP.printOut(IP.mask);
- System.out.print("\nNetwork: ");
- IP.printOut(IP.network);
- System.out.print("\nBroadcast: ");
- IP.printOut(IP.broadcast);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement