Error Correction Code - CRC


 Error Correction Code - CRC



import java.util.Scanner;


public class CRC {


    static String divide(String data, String generator) {


        char[] Nr = data.toCharArray();

        int Drlen = generator.length();


        for (int i = 0; i <= Nr.length - Drlen; i++) {


            if (Nr[i] == '1') {


                for (int j = 0; j < Drlen; j++) {


                    // XOR

                    Nr[i + j] =

                        (Nr[i + j] == generator.charAt(j))

                        ? '0' : '1';

                }

            }

        }


        return new String(Nr)

                .substring(Nr.length - Drlen + 1);

    }


    public static void main(String[] args) {


        Scanner sc = new Scanner(System.in);


        System.out.print("Enter data bits: ");

        String data = sc.next();


        System.out.print("Enter generator bits: ");

        String generator = sc.next();


        int zeros = generator.length() - 1;


        String newData = data + "0".repeat(zeros);


        String CRC = divide(newData, generator);


        String codeword = data + CRC;


        System.out.println("\n----- Sender Side -----");

        System.out.println("Original Data   : " + data);

        System.out.println("Generator       : " + generator);

        System.out.println("Appended Data   : " + newData);

        System.out.println("CRC             : " + CRC);

        System.out.println("Transmitted Data: " + codeword);


        System.out.println("\n----- Receiver Side -----");


        System.out.print("Enter received data: ");

        String received = sc.next();


        String remainder = divide(received, generator);


        System.out.println("Remainder       : " + remainder);


        if (remainder.equals("0".repeat(zeros)))

            System.out.println("No error detected.");

        else

            System.out.println("Error detected.");


        sc.close();

    }

}

ARP - RARP Protocol

 // ARP - RARP Protocol



import java.io.*;

import java.util.*;

 

class ARP_RARP

{ 

    public static void main(String args[]) throws Exception

    {

        Scanner sc=new Scanner(System.in);

     

         // Read current ARP table from OS

        HashMap<String,String> arpTable = new HashMap<>();

                 

         arpTable.clear();

         ProcessBuilder pb = new ProcessBuilder("arp", "-a");

        Process p = pb.start();

 

        BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));

         String line;

         while((line=br.readLine())!=null)

        {

            line=line.trim();

 

            // Ignore headings

            if(line.startsWith("Interface") ||

                   line.startsWith("Internet") ||

                   line.length()==0)

                   continue;

 

            String parts[]=line.split("\\s+");

 

            if(parts.length>=3)

            {

                String ip=parts[0];

                String mac=parts[1];

 

                arpTable.put(ip,mac);

            }

        }

        br.close();

 

       System.out.println("ARP Table");

        for(Map.Entry<String,String> e:arpTable.entrySet())

        {

             System.out.printf("%-20s %s\n",  e.getKey(), e.getValue());

        }

                 

                 

      // ARP : IP -> MAC  

      System.out.print("Enter IP : ");

        String ip = sc.nextLine();

                 

      if(arpTable.containsKey(ip))

            System.out.println("MAC Address : "+arpTable.get(ip));

       else

            System.out.println("IP not found.");

                 

                  // RARP : MAC -> IP

                  System.out.print("Enter MAC : ");

                  String mac = sc.nextLine();

                 

                  boolean found=false;

                for(Map.Entry<String,String> e:arpTable.entrySet())

               {

                    if(e.getValue().equalsIgnoreCase(mac))

                     {

                            System.out.println("IP Address : "+e.getKey());

                            found=true;

                    }

                }

            if(!found)

                    System.out.println("MAC not found.");

         }

}



/* 

Sample output


>javac ARP_RARP.java

>java ARP_RARP

ARP Table

239.255.255.250      01-00-5e-7f-ff-fa

255.255.255.255      ff-ff-ff-ff-ff-ff

10.58.180.155        4a-e1-2f-34-53-1b

10.58.180.255        ff-ff-ff-ff-ff-ff

224.0.0.252          01-00-5e-00-00-fc

224.0.0.251          01-00-5e-00-00-fb

224.0.0.22           01-00-5e-00-00-16


Enter IP : 224.0.0.251

MAC Address : 01-00-5e-00-00-fb


Enter MAC : ff-ff-ff-ff-ff-ff

IP Address : 255.255.255.255

IP Address : 10.58.180.255


>java ARP_RARP

ARP Table

239.255.255.250      01-00-5e-7f-ff-fa

255.255.255.255      ff-ff-ff-ff-ff-ff

10.58.180.155        4a-e1-2f-34-53-1b

10.58.180.255        ff-ff-ff-ff-ff-ff

224.0.0.252          01-00-5e-00-00-fc

224.0.0.251          01-00-5e-00-00-fb

224.0.0.22           01-00-5e-00-00-16


Enter IP : 127.0.0.1

IP not found.


Enter MAC : ad-aa-ca-bb-cc-aa

MAC not found.


*/