Wednesday, 27 November 2013

Socket Programming-CRC

import java.util.*;
import javax.swing.*;
class Cyclic_Reduncany_Check
{
    static StringBuffer Frame=new StringBuffer();
    static StringBuffer Generator=new StringBuffer();
    static StringBuffer Message=new StringBuffer();
    static StringBuffer Remainder=new StringBuffer();
    static StringBuffer Quotient=new StringBuffer();
    static StringBuffer Zero=new StringBuffer();
    static StringBuffer TransmittedFrame=new StringBuffer();
    static int fl,gl,ml,pointer,turn=0;
   
    public static void main(String args[])
    {
       
    Object[] options = {"Transmission End", "Receiving End"};
    int selection = JOptionPane.showOptionDialog(null,"Select the Terminal",null, JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE, null,options, options[0]);
    if(selection == JOptionPane.YES_NO_OPTION)
    {
        input_t();
        length_t();
        initialise_t();
        calculate_t();
        output_t();
    }
    else
    {
        input_r();
        length_r();
        initialise_r();
        calculate_r();
        output_r();
    }
       
       
    }
   
    static void input_t()
    {
        Scanner sc=new Scanner(System.in);
Frame.append(JOptionPane.showInputDialog("Enter the Frame"));
Generator.append(JOptionPane.showInputDialog("Enter the Generator"));
     
       
       
     
    }
   
   
    static void length_t()
    {
      fl=Frame.length();
      gl=Generator.length();
      ml=gl+fl-1;
      pointer=gl;
    }
   
    static void initialise_t()
    {
        Message.append(Frame);
        for(int i=0;i<gl-1;i++)
        {
         Message.append("0");  
        }
        Remainder.append(Message.substring(0,gl));
        for(int i=0;i<gl;i++)
            Zero.append("0");
    }
   
    static void calculate_t()
    {
        for(;pointer<ml;pointer++)
        {
           
           
            if(Remainder.charAt(0)=='1')
            {
               
                Remainder=exor(Remainder,Generator);
                Remainder.deleteCharAt(0);
                Remainder.append(Message.charAt(pointer));
                Quotient.append('1');
               
            }
            else
            {
               
            Remainder=exor(Remainder,Zero);  
            Remainder.deleteCharAt(0);
            Remainder.append(Message.charAt(pointer));
            Quotient.append('0');
           
            }
        }
       
       
        Remainder.deleteCharAt(0);
        Quotient.append('0');
        TransmittedFrame=Frame;
        TransmittedFrame.append(Remainder);
       
    }
   
    static StringBuffer exor(StringBuffer Frame,StringBuffer Remainder)
    {
        StringBuffer exor=new StringBuffer();
        for(int i=0;i<gl;i++)
        {
            if(Frame.charAt(i)==Remainder.charAt(i))
                exor.append('0');
            else
                exor.append('1');
           
        }
        return exor;
    }
   
    static void output_t()
    {
        JOptionPane.showMessageDialog(null,"Frame             : "+Frame+
                "\n"+"Generator         : "+Generator+
                "\n"+"Quotient          : "+Quotient+
                "\n"+"Remainder         : "+Remainder+
                "\n"+"Transmitted Frame : "+TransmittedFrame);
     
    }
   
     static void input_r()
    {
        Scanner sc=new Scanner(System.in);
     
   
Frame.append(JOptionPane.showInputDialog("Enter the Recieved Frame"));
Generator.append(JOptionPane.showInputDialog("Enter the Generator"));
    }
   
   
    static void length_r()
    {
      fl=Frame.length();
      gl=Generator.length();
      ml=fl;
      pointer=gl;
    }
   
    static void initialise_r()
    {
        Message.append(Frame);
        Remainder.append(Message.substring(0,gl));
        for(int i=0;i<gl;i++)
            Zero.append("0");
    }
   
    static void calculate_r()
    {
        for(;pointer<ml;pointer++)
        {
           
           
            if(Remainder.charAt(0)=='1')
            {
               
                Remainder=exor(Remainder,Generator);
                Remainder.deleteCharAt(0);
                Remainder.append(Message.charAt(pointer));
                Quotient.append('1');
            }
            else
            {
               
            Remainder=exor(Remainder,Zero);  
            Remainder.deleteCharAt(0);
            Remainder.append(Message.charAt(pointer));
            Quotient.append('0');
            }
        }
        Quotient.append('0');
        TransmittedFrame=Frame;
        TransmittedFrame.append(Remainder);
    }
   
   public static boolean check()
   {
       for(int i=0;i<gl;i++)
       {
           if(Remainder.charAt(i)!=Zero.charAt(i))
           {
               return false;
           }
       }
       return true;
   }
    static void output_r()
    {
        if(check())
        {
        JOptionPane.showMessageDialog(null,"Correctly recieved");
        }
        else
        {
         JOptionPane.showMessageDialog(null,"Incorrect Message Recieved");
        }
     
    }

   
}

No comments:

Post a Comment