HAMMING CODE :
CLIENT
import java.io.*;
import java.net.*;
import java.util.*;
import java.math.*;
class Clienthamming
{ public
static void main(String args[])
{
try
{
BufferedReader
in=new BufferedReader(new InputStreamReader(System.in));
Socket
clsct=new Socket("127.0.0.1",139);
DataInputStream
din=new DataInputStream(clsct.getInputStream());
DataOutputStream
dout=new DataOutputStream(clsct.getOutputStream());
int
x,y,z;
System.out.println("Enter
the no.of bits in data word:");
String
strr=in.readLine();
x=Integer.parseInt(strr);
System.out.println("Enter
the no.of redundant bits:");
String
str1=in.readLine();
y=Integer.parseInt(str1);
z=x+y;
double
count[]=new double[100];
String
ar[]=new String[100];
String
arr[]=new String[100];
System.out.println("Enter
the binary data:");
for(int
j=1;j<=x;j++)
{
ar[j]=in.readLine();
}
int
k=x;
int
w=1;
for(int
j=3;j<=z;j++)
{
int
a1=(int)Math.pow(2,w);
System.out.println("power"+a1);
if(j!=a1)
{
arr[j]=ar[k];
k--;
if(arr[j].equals("1"))
{
count[j]=1;
}
else
count[j]=0;
}
else
count[j]=0;
if(j-1==a1)
w++;
System.out.println(arr[j]+"
in position "+j);
}
for(int
i=0;i<y;i++)
{ double d=0;
int
a=(int)Math.pow(2,i);
switch(a)
{
case
1:
for(int
b=2;b<=z;b++)
{
d+=count[b+1];
b++;
}
break;
case
2:
for(int
b=2;b<=z;b++)
{
d+=count[b]+count[b+1];
b++;b++;b++;
}
break;
case
4:
for(int
b=4;b<=z;b++)
{
d+=count[b]+count[b+1]+count[b+2]+count[b+3];
b++;b++;b++;b++;b++;b++;b++;
}
break;
case
8:
for(int
b=8;b<=z;b++)
{
d+=count[b]+count[b+1]+count[b+2]+count[b+3]+count[b+4]+count[b+5]+count[b+6]+count[b+7];
b=(b*i)-1;
}
break;
}
d%=2;
if(d==0)
arr[a]="0";
else
arr[a]="1";
}
dout.writeBytes(strr+'\n'+str1+'\n');
for(int
i=1;i<=z;i++)
{
dout.writeBytes(arr[i]+'\n');
}
String
str=din.readLine();
System.out.println(str);
clsct.close();
}
catch
(Exception e)
{ System.out.println(e); }
}
}
SERVER
import java.io.*;
import java.net.*;
import java.util.*;
import java.math.*;
class Serverhamming
{ public
static void main(String args[])
{
try
{
ServerSocket
obj=new ServerSocket(139);
Socket
obj1=obj.accept();
while(true)
{
DataInputStream
din=new DataInputStream(obj1.getInputStream());
DataOutputStream
dout=new DataOutputStream(obj1.getOutputStream());
String
str1="Data Received Correctly";
String
str2="Error in this position";
double
count[]=new double[100];
String
arr[]=new String[100];
String
s[]=new String[10];
String
strr=din.readLine();
int
x=Integer.parseInt(strr);
System.out.println("No.of
bits in Data word: "+x);
String
str11=din.readLine();
int
y=Integer.parseInt(str11);
System.out.println("No.of
Redundant bit: "+y);
int
z=x+y;
System.out.println("No.of
bits in code word:"+z);
for(int
i=1;i<=z;i++)
{
arr[i]=din.readLine();
if(arr[i].equals("1"))
{
count[i]=1;
}
else
count[i]=0;
}
for(int
i=1;i<=z;i++)
{ System.out.println(arr[i]+" in
position "+1);}
for(int
j=0;j<y;j++)
{
double
d=0;
int
a=(int)Math.pow(2,j);
switch(a)
{
case
1:
for(int
b=1;b<=z;b++)
{
int
s1=b%2;
if(s1!=0)
d+=count[b];
}
break;
case
2:
for(int
b=2;b<=z;b++)
{
d+=count[b]+count[b+1];
b++;b++;b++;
}
break;
case
4:
for(int
b=4;b<=z;b++)
{
d+=count[b]+count[b+1]+count[b+2]+count[b+3];
b++;b++;b++;b++;b++;b++;b++;
}
break;
case
8:
for(int
b=8;b<=z;b++)
{
d+=count[b]+count[b+1]+count[b+2]+count[b+3]+count[b+4]+count[b+5]+count[b+6]+count[b+7];
b=(b*j)-1;
}
break;
}
d%=2;
if(d==0)
count[a]=0;
else
count[a]=1;
}
if(x<=4)s[y]="0";
for(int
j=0;j<y;j++)
{
int
a=(int)Math.pow(2,j);
if(count[a]==0)
{
s[j]="0";
}
else
s[j]="1";
}
if(s[0].equals("0")
&& s[1].equals("0") && s[2].equals("0")
&& s[3].equals("0"))
dout.writeBytes(str1+'\n');
else
dout.writeBytes(str2+"
"+s[3]+s[2]+s[1]+s[0]+'\n');
obj.close();
}
}
catch(Exception
e)
{ System.out.println(e);}
}
}
OUTPUT
Client
Enter the no.of bits in data word:
7
Enter the no.of redundant bits:
4
Enter the binary data:
0
0
0
0
0
1
0
power2
0 in position 3
power4
null in position 4
power4
1 in position 5
power8
0 in position 6
power8
0 in position 7
power8
null in position 8
power8
0 in position 9
power16
0 in position 10
power16
0 in position 11
Server
No.of bits in Data word: 7
No.of Redundant bit: 4
No.of bits in code word:11
1 in position 1
0 in position 1
0 in position 1
1 in position 1
1 in position 1
0 in position 1
0 in position 1
0 in position 1
0 in position 1
0 in position 1
0 in position 1
Client
Data Received Correctly
CRC
Client
import java.io.*;
import java.net.*;
class crccli
{
public
static void main(String args[]) throws Exception
{
byte
b[]=new byte[1024];
DatagramSocket
ds=new DatagramSocket(5000);
DatagramPacket
dp=new DatagramPacket(b,1024);
String
s;
StringBuffer
s1=new StringBuffer(11);
int
i,j=0;
int
temp[]=new int[4];
int
divisor[]=new int[4];
divisor[3]=1;
divisor[2]=1;
divisor[1]=0;
divisor[0]=1;
int
dividend[]=new int[11];
BufferedReader
buf=new BufferedReader(new InputStreamReader(System.in));
System.out.println("Enter
a character: ");
s=buf.readLine();
System.out.println("The
ASCII value of the character is "+(int)s.charAt(0));
s=Integer.toBinaryString((int)s.charAt(0));
System.out.println("The
Binary equivalent is "+s);
i=s.length()-1;
for(j=0;j<3;j++)
dividend[j]=0;
while(i>=0)
{
if((int)s.charAt(i)==48)
dividend[j]=0;
else
dividend[j]=1;
i--;
j++;
}
while(j<11)
{
dividend[j]=0;
j++;
}
System.out.print("The
Dividend is ");
for(i=10;i>=0;i--)
System.out.print(dividend[i]);
System.out.println("\n");
System.out.print("The
divisor is ");
for(i=3;i>=0;i--)
System.out.print(divisor[i]);
System.out.println("\n");
temp[3]=dividend[10];
temp[2]=dividend[9];
temp[1]=dividend[8];
for(i=10;(i-3)>=0;i--)
{
temp[0]=dividend[i-3];
if(temp[3]==0)
{
for(j=3;j>=0;j--)
temp[j]=temp[j]^0;
}
else
{
for(j=3;j>=0;j--)
temp[j]=temp[j]^divisor[j];
}
for(j=3;j>0;j--)
temp[j]=temp[j-1];
}
System.out.println("The
remainder is "+temp[3]+temp[2]+temp[1]);
dividend[2]=temp[3];
dividend[1]=temp[2];
dividend[0]=temp[1];
for(i=0;i<11;i++)
{
if(dividend[i]==0)
s1.insert(i,"0");
else
s1.insert(i,"1");
}
s=s1.toString();
System.out.println("The
data to be sent is "+s1.reverse());
b=s.getBytes();
ds.send(new
DatagramPacket(b,b.length,InetAddress.getLocalHost(),5001));
ds.receive(dp);
String
result=new String(dp.getData(),0,dp.getLength());
System.out.println(result);
}
}
Server
import java.io.*;
import java.net.*;
class crcser
{
public
static void main(String args[]) throws Exception
{
byte
b[]=new byte[1024];
DatagramSocket
ds=new DatagramSocket(5001);
DatagramPacket
dp=new DatagramPacket(b,1024);
String
s=new String();
int
i,j=0;
int
temp[]=new int[4];
int
divisor[]=new int[4];
divisor[3]=1;
divisor[2]=1;
divisor[1]=0;
divisor[0]=1;
int
dividend[]=new int[11];
ds.receive(dp);
String
s1=new String(dp.getData(),0,dp.getLength());
StringBuffer s2=new
StringBuffer(s1);
System.out.println("Data received: "+s2.reverse());
for(i=0;i<11;i++)
{
if((int)s1.charAt(i)==48)
dividend[i]=0;
else
dividend[i]=1;
}
System.out.print("The
divisor is ");
for(i=3;i>=0;i--)
System.out.print(divisor[i]);
System.out.println("\n");
temp[3]=dividend[10];
temp[2]=dividend[9];
temp[1]=dividend[8];
for(i=10;(i-3)>=0;i--)
{
temp[0]=dividend[i-3];
if(temp[3]==0)
{
for(j=3;j>=0;j--)
temp[j]=temp[j]^0;
}
else
{
for(j=3;j>=0;j--)
temp[j]=temp[j]^divisor[j];
}
for(j=3;j>0;j--)
temp[j]=temp[j-1];
}
System.out.println("The
remainder is "+temp[3]+temp[2]+temp[1]);
if(temp[3]==0&&temp[2]==0&&temp[1]==0)
{
System.out.println("No
errror in packet");
s="Packet
received at server without error";
}
else
{
System.out.println("Errror
in packet");
s="Packet
received at server with error";
}
b=s.getBytes();
ds.send(new
DatagramPacket(b,b.length,InetAddress.getLocalHost(),5000));
}
}
Output
Enter a character:
0
The ASCII value of the character is 48
The Binary equivalent is 110000
The Dividend is 00110000000
The divisor is 1101
The remainder is 011
The data to be sent is 00110000011
Server
Data received: 00110000011
The divisor is 1101
The remainder is 000
No errror in packet
Client
Packet received at server without error
No comments:
Post a Comment