0% found this document useful (0 votes)
31 views12 pages

RR University Networking Practical Notes

The document contains several C programs that implement various error detection and correction techniques in computer networking, including Parity Generation, Checksum Generation, Hamming Code, CRC, Stop and Wait, Distance Vector, Go Back N, and Selective Repeat protocols. Each program is designed to demonstrate a specific method of ensuring data integrity during transmission. The programs utilize user input to process binary data and provide outputs indicating the status of data transmission and any errors detected.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views12 pages

RR University Networking Practical Notes

The document contains several C programs that implement various error detection and correction techniques in computer networking, including Parity Generation, Checksum Generation, Hamming Code, CRC, Stop and Wait, Distance Vector, Go Back N, and Selective Repeat protocols. Each program is designed to demonstrate a specific method of ensuring data integrity during transmission. The programs utilize user input to process binary data and provide outputs indicating the status of data transmission and any errors detected.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

Parity Generator

Program:
#include<stdio.h>
#include<conio.h>
void main()
{
int n[8],i,p=1,c=0;
clrscr();
printf("Enter 7bit Binary No: \n");
for(i=1;i<8;i++)
{
m: scanf("%d",&n[i]);
if((n[i]!=0)&&(n[i]!=1))
{
printf("enter 0 or 1 only\n");
goto m;
}
}
for(i=p;i<8;i++)
{
if(n[i]==1)
{
c++;
}
}
printf("\nThe No :-");
for(i=p;i<8;i++)
printf(" %d",n[i]);
if(c%2==0)
{
printf(" is even parity\n");
n[0]=0;
for(i=0;i<8;i++)
printf("%d ",n[i]);

}
else
{
printf(" is odd parity\n");
n[0]=1;
for(i=0;i<8;i++)
printf("%d ",n[i]);
}

getch();
}
Output:
CheckSum Generator

Program:
#include<stdio.h>
#include<conio.h>
#include<math.h>

int sender(int b[10],int k)


{
int checksum,sum=0,i;
printf("\n****SENDER****\n");

for(i=0;i<k;i++)
sum+=b[i];
printf("SUM IS: %d",sum);

checksum=~sum;
printf("\nSENDER's CHECKSUM IS:%d",checksum);
return checksum;
}

int receiver(int c[10],int k,int scheck)


{
int checksum,sum=0,i;
printf("\n\n****RECEIVER****\n");
for(i=0;i<k;i++)
sum+=c[i];
printf(" RECEIVER SUM IS:%d",sum);
sum=sum+scheck;
checksum=~sum;
printf("\nRECEIVER's CHECKSUM IS:%d",checksum);
return checksum;
}
int main()
{
int a[10],i,m,scheck,rcheck;
clrscr();
printf("\nENTER SIZE OF THE STRING:");
scanf("%d",&m);
printf("\nENTER THE ELEMENTS OF THE ARRAY:");
for(i=0;i<m;i++)
scanf("%d",&a[i]);
scheck=sender(a,m);
rcheck=receiver(a,m,scheck);
if(rcheck==0)
printf("\n\nNO ERROR IN TRANSMISSION\n\n");
else
printf("\n\nERROR DETECTED");
getch();
return 0;
}

Hamming Code
Program:
#include<stdio.h>
#include<conio.h>
void main() {
int data[10];
int dataatrec[10],c,c1,c2,c3,i;
clrscr();
printf("Enter 4 bits of data one by one\n");
scanf("%d",&data[0]);
scanf("%d",&data[1]);
scanf("%d",&data[2]);
scanf("%d",&data[4]);

//Calculation of even parity


data[6]=data[0]^data[2]^data[4];
data[5]=data[0]^data[1]^data[4];
data[3]=data[0]^data[1]^data[2];

printf("\nEncoded data is\n");


for(i=0;i<7;i++)
printf("%d",data[i]);

printf("\n\nEnter received data bits one by one\n");


for(i=0;i<7;i++)
scanf("%d",&dataatrec[i]);

c1=dataatrec[6]^dataatrec[4]^dataatrec[2]^dataatrec[0];
c2=dataatrec[5]^dataatrec[4]^dataatrec[1]^dataatrec[0];
c3=dataatrec[3]^dataatrec[2]^dataatrec[1]^dataatrec[0];
c=c3*4+c2*2+c1 ;

if(c==0) {
printf("\nNo error while transmission of data\n");
}
else {
printf("\nError on position %d",c);

printf("\nData sent : ");


for(i=0;i<7;i++)
printf("%d",data[i]);

printf("\nData received : ");


for(i=0;i<7;i++)
printf("%d",dataatrec[i]);
printf("\nCorrect message is\n");

//if errorneous bit is 0 we complement it else vice versa


if(dataatrec[7-c]==0)
dataatrec[7-c]=1;
else
dataatrec[7-c]=0;
for (i=0;i<7;i++) {
printf("%d",dataatrec[i]);
}
}
getch();
}

Output:
CRC
Program:
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main() {
int i,j,keylen,msglen;
char input[100], key[30],temp[30],quot[100],rem[30],key1[30];
clrscr();
printf("Enter Data: ");
gets(input);
printf("Enter Key: ");
gets(key);
keylen=strlen(key);
msglen=strlen(input);
strcpy(key1,key);
for (i=0;i<keylen-1;i++) {
input[msglen+i]='0';
}
for (i=0;i<keylen;i++)
temp[i]=input[i];
for (i=0;i<msglen;i++) {
quot[i]=temp[0];
if(quot[i]=='0')
for (j=0;j<keylen;j++)
key[j]='0'; else
for (j=0;j<keylen;j++)
key[j]=key1[j];
for (j=keylen-1;j>0;j--) {
if(temp[j]==key[j])
rem[j-1]='0'; else
rem[j-1]='1';
}
rem[keylen-1]=input[i+keylen];
strcpy(temp,rem);
}
strcpy(rem,temp);
printf("\nQuotient is ");
for (i=0;i<msglen;i++)
printf("%c",quot[i]);
printf("\nRemainder is ");
for (i=0;i<keylen-1;i++)
printf("%c",rem[i]);
printf("\nFinal data is: ");
for (i=0;i<msglen;i++)
printf("%c",input[i]);
for (i=0;i<keylen-1;i++)
printf("%c",rem[i]);
getch();
}
Output:
Stop and wait
Program:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
int i,j,noframes,x,x1=10,x2;
clrscr();
for(i=0;i<200;i++)
rand();
noframes=rand()/200;
i=1;j=1;
noframes=noframes/8;
printf("\nNumber of frames is %d",noframes);
getch();
while(noframes>0)
{
printf("\nSending Frame %d",i);
srand(x1++);
x=rand()%10;
if(x%2==0)
{
for(x2=1;x2<2;x2++)
{
printf("\nWaiting for %d seconds\n",x2);
sleep(x2);
}
printf("\nSending frame %d",i);
srand(x1++);
x=rand()%10;
}
printf("\nAck for frame %d",j);
noframes-=1;
i++;
j++;
}
printf("\nEnd of Stop and Wait protocol");
getch();
}
Output:

Distance Vector
Program:
#include<stdio.h>
#include<conio.h>
struct node
{
unsigned dist[20];
unsigned from[20];
}rt[10];
int main()
{
int costmat[20][20];
int nodes,i,j,k,count=0;
printf("\nEnter the number of nodes : ");
scanf("%d",&nodes);//Enter the nodes
printf("\nEnter the cost matrix :\n");
for(i=0;i<nodes;i++)
{
for(j=0;j<nodes;j++)
{
scanf("%d",&costmat[i][j]);
costmat[i][i]=0;
rt[i].dist[j]=costmat[i][j];//initialise the distance equal to cost matrix
rt[i].from[j]=j;
}
}
do
{
count=0;
for(i=0;i<nodes;i++)//We choose arbitary vertex k and we calculate the direct distance
from the node i to k using the cost matrix
//and add the distance from k to node j
for(j=0;j<nodes;j++)
for(k=0;k<nodes;k++)
if(rt[i].dist[j]>costmat[i][k]+rt[k].dist[j])
{//We calculate the minimum distance
rt[i].dist[j]=rt[i].dist[k]+rt[k].dist[j];
rt[i].from[j]=k;
count++;
}
}while(count!=0);
for(i=0;i<nodes;i++)
{
printf("\n\n For router %d\n",i+1);
for(j=0;j<nodes;j++)
{
printf("\t\nnode %d via %d Distance %d ",j+1,rt[i].from[j]+1,rt[i].dist[j]);
}
}
printf("\n\n");
getch();
return 0;
}
Output:
Go Back N
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
int temp1,temp2,temp3,temp4,i,winsize=8,noframes,moreframes;
char c;
int receiver(int);
int simulate(int);
clrscr();
temp4=0, temp1=0,temp2=0, temp3=0;
for(i=0;i<200;i++)
rand();
noframes=rand()/200;
printf("\n Number of frames is %d",noframes);
getch();
moreframes=noframes;
while(moreframes>=0)
{
temp1=simulate(winsize);
winsize-=temp1;
temp4+=temp1;
if(temp4>noframes)
temp4=noframes;
for(i=temp3+1;i<=temp4;i++)
printf("\nSending Frame %d",i);
getch();
temp2=receiver(temp1);
temp3+=temp2;
if(temp3>noframes)
temp3=noframes;
printf("\nAcknowledgement for the frames up to %d",temp3);
getch();
moreframes-=temp2;
temp4=temp3;
if(winsize<=0)
winsize=8;
}
printf("\nEnd of sliding window protocol.");
getch();
}
int receiver(int temp1)
{
int i;
for(i=1;i<100;i++)
rand();
i=rand()%temp1;
return i;
}
int simulate(int winsize)
{
int temp1,i;
for(i=1;i<50;i++)
temp1=rand();
if(temp1==0)
temp1=simulate(winsize);
i=temp1%winsize;
if(i==0)
return winsize;
else
return temp1%winsize;
}
Output:

Selective Repeat
Program:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main()
{
int temp1,temp2,temp3,temp4,temp5,i,winsize=8,noframes,moreframes;
char c;
int receiver(int);
int simulate(int);
int nack(int);
clrscr();
temp4=0, temp1=0,temp2=0, temp3=0, temp5=0;
for(i=0;i<200;i++)
rand();
noframes=rand()/200;
printf("\n Number of frames is %d",noframes);
getch();
moreframes=noframes;
while(moreframes>=0)
{
temp1=simulate(winsize);
winsize-=temp1;
temp4+=temp1;
if(temp4>noframes)
temp4=noframes;
for(i=noframes-moreframes;i<=temp4;i++)
printf("\nSending Frame %d",i);
getch();
temp2=receiver(temp1);
temp3+=temp2;
if(temp3>noframes)
temp3=noframes;
temp2=nack(temp1);
temp5+=temp2;
if(temp5!=0)
{
printf("\nNo acknowledgement for the frame %d",temp5);
getch();
for(i=1;i<temp5;i++);
printf("\nRetransmitting frame %d",temp5);
getch();
}
moreframes-=temp1;
if(winsize<=0)
winsize=8;
}
printf("\nEnd of sliding window protocol.");
getch();
}
int receiver(int temp1)
{
int i;
for(i=1;i<100;i++)
rand();
i=rand()%temp1;
return i;
}
int nack(int temp1)
{
int i;
for(i=1;i<100;i++)
rand();
i=rand()%temp1;
return i;
}
int simulate(int winsize)
{
int temp1,i;
for(i=1;i<50;i++)
temp1=rand();
if(temp1==0)
temp1=simulate(winsize);
i=temp1%winsize;
if(i==0)
return winsize;
else
return temp1%winsize;
}
Output:

You might also like