0% found this document useful (0 votes)
86 views

Program 1: Write A Program in C/C++ For Error Detecting Code Using CRC-CCITT (16-Bits)

The program writes code for error detecting code using CRC-CCITT(16-bits). It includes functions to calculate the remainder, shift the bits left, perform the CRC, calculate the transmission, and the main function. The main function gets the frame bits from the user, appends 16 zeros, performs the CRC calculation, displays the results, and checks if the received frame is correct.

Uploaded by

Advith
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
86 views

Program 1: Write A Program in C/C++ For Error Detecting Code Using CRC-CCITT (16-Bits)

The program writes code for error detecting code using CRC-CCITT(16-bits). It includes functions to calculate the remainder, shift the bits left, perform the CRC, calculate the transmission, and the main function. The main function gets the frame bits from the user, appends 16 zeros, performs the CRC calculation, displays the results, and checks if the received frame is correct.

Uploaded by

Advith
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

Program 1: Write a program in C/C++ for error detecting code using

CRC-CCITT(16-bits).

#include<stdio.h>
char m[50],g[50],r[50],q[50],temp[50];

void calrem()
{ int i,j;
for(i=1;i<=16;i++)
r[i-1]=((int)temp[i]-48)^((int)g[i]-48)+48;
}

void shiftl()
{ int i;
for(i=1;i<=16;i++) r[i-1]=r[i];
}

void crc(int n)
{
int i,j;
for(i=0;i<n;i++) temp[i]=m[i];
for(i=0;i<n;i++) r[i]=m[i];

for(i=0;i<n-16;i++)
{
if(r[0] == '1')
{
q[i]='1';
calrem();
}
else
{
q[i]='0';
shiftl();
}
r[16]=m[17+i];
r[17]='\0';

for(j=0;j<=17;j++)
temp[j]=r[j];
}

q[n-16]='\0';
}

void caltrans(int n)
{
int i,k=0;
for(i=n-16;i<n;i++)
m[i]=((int)m[i]-48)^((int)r[k++]-48)+48;
m[i]='\0';
}

int main()
{
int n,i=0;
char ch,flag=0;
printf("Enter the frame bits:");
while((ch=getc(stdin))!='\n')
m[i++]=ch;
n=i;
for(i=0;i<16;i++)
m[n++]='0';
m[n]='\0';
printf("\n Message after appending 16 zeros:%s",m);
for(i=0;i<=16;i++)
g[i]='0';
g[0]=g[4]=g[11]=g[16]='1';g[17]='\0';
printf("\n Generator :%s\n",g);
crc(n);
printf("\n\n Quotient:%s",q);
printf("\n The final remainder is:%s",r);
caltrans(n);
printf("\n Transmitted frame:%s",m);
printf("\n\n Enter transmitted frame which contains %d bits:",n);
scanf("\n %s",m);
printf("CC checking\n");
crc(n);
printf("\n Remainder is:%s",r);
for(i=0;i<16;i++)
{
if(r[i] == '0')
{
flag = 0;
continue;
}
else
{
flag = 1;
break;
}
}
if (flag == 1)
printf("\n\n Error during transmission\n");
else
printf("\n\n Received frame is correct\n");
}

Program2: Write a program for distance vector algorithm to find suitable


path for transmission.

#include<stdio.h>

struct node

unsigned dist[20];

unsigned from[20];

}rt[10];

int main()

int dmat[20][20];

int n,i,j,k,count=0;

printf("\n enter the no of nodes\n");

scanf("%d",&n);

printf("enter the cost matrix:");

for(i=0;i<n;i++)
{

for(j=0;j<n;j++)

scanf("%d",&dmat[i][j]);

dmat[i][i]=0;

rt[i].dist[j]=dmat[i][j];

rt[i].from[j]=j;

do

count=0;

for(i=0;i<n;i++)

for(j=0;j<n;j++)

for(k=0;k<n;k++)

if(rt[i].dist[j]>dmat[i][k]+rt[k].dist[j])

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<n;i++)

printf("\n state value for router %d is\n",i+1);

for(j=0;j<n;j++)

printf("\t \n to node %d via %d,distance=%d\n",j+1,rt[i].from[j]+1,rt[i].dist[j]);

printf("\n\n");

return 0;

Program 3: Write a program in C/C++ to implement the Diffie-Hellman key


exchange algorithm​.
#include<stdio.h>

#include<math.h>

#include<string.h>

long int p, alpha,ya,yb;

long int compute(long int b ,long int p, int m);


long int compute(long int b ,long int p, int m)

long int k = 1;

for (int j = 1;j <=p;j++)

k = k *b;

k = k % m;

return k;

int main()

{ long int p,key1,key2,xa,xb,n;

int alpha;

printf("\n Diffie Hellman Key EXchange MECHANISM\n");

printf("\n enter PRIME NUMBER and Primitive root \n");

scanf("%ld",&p);

scanf("%ld",&alpha);

n=p;

for(int i = 2; i <= n/2; ++i)


{

// condition for nonprime number

if(n%i == 0)

printf("The prime number is not correct\n");

exit(0);

printf("\nENTER USER A PRIvate key \n");

scanf("%ld",&xa);

//compute user A public key

ya=compute(alpha,xa,p);

printf("\n USER B PRIvate key \n");

scanf("%ld", &xb);

//compute user B public key

yb=compute(alpha,xb,p);

printf("\nUSER A sends PUBLIC KEY %ld ",ya);

printf("\nUSER B computes Shared secret key1");

key1=compute(ya,xb,p);
printf("\n Shared secret key1 is %ld",key1);

printf("\nUSER B sends PUBLIC KEY %ld ",yb);

printf("\nUSER A computes Shared secret key2");

key2=compute(yb,xa,p);

printf("\n Shared secret key is %ld",key2);

if (key1==key2)

{printf(" \n Both users have successfully exchanged the secret key\n");

printf (" \n shared secret key is %ld",key1);

else

printf("\n failed to Exchange the key !!!!");

return 1;

Program 4 :RSA

#include<stdio.h>

#include<string.h>
#include<math.h>

int mult(unsigned int x, unsigned int y,unsigned int n)

unsigned long int k=1;

int j;

for(j=1;j<=y;j++)

k=(k*x)%n;

return(unsigned int) k;

int main()

char msg[100],pt[100];

unsigned int ct[100],n,d,e,p,q,i;

printf("enter the message");

scanf("%s",msg);

strcpy(pt,msg);

for(i=0;i<strlen(msg);i++)

pt[i]=msg[i];

n=253;d=17;e=13;

printf("CT=");

for(i=0;i<strlen(msg);i++)
ct[i]=mult(pt[i],e,n);

for(i=0;i<strlen(msg);i++)

printf("%d",ct[i]);

printf("\nPT=");

for(i=0;i<strlen(msg);i++)

printf("%c",pt[i]);

for(i=0;i<strlen(msg);i++)

pt[i]=mult(ct[i],d,n);

return 0;

Program 5: Write a program in C/C++ for congestion control using leaky bucket
algorithm.

#include<stdio.h>

#include<math.h>

#include<stdlib.h>

#include<unistd.h>

int main()

{
int
packets[8],i,j,clk,b_size,o_rate,i_rate,p_remain,p_sz_rm=0,p_sz,p_time,flag=0;

system("clear");

for(i=0;i<5;++i)

packets[i]=rand()%10;

printf("\n Enter the output rate:");

scanf("%d",&o_rate);

printf("\n Enter the Bucket Size:");

scanf("%d",&b_size);

for(i=0;i<5;++i)

if((packets[i]+p_sz_rm)>b_size)

if(packets[i]>b_size)

printf("\n Incoming packet size (%d) is Greater than bucket capacity -


REJECTED",packets[i]);

else

printf("\n Bucket capacity exceeded - REJECTED!!");

}
else

{ p_remain=4-i;

p_sz=packets[i];

p_sz_rm+=p_sz;

printf("\n_________________________\n");

printf("\n Incoming Packet :%d",p_sz);

printf("\n Transmission left:%d",p_sz_rm);

p_time=rand()%10;

printf("\n Next Packet Will come at :%d",p_time);

for(clk=0;clk<p_time && p_sz_rm>0;clk++)

printf("\n Time Left:%d",p_time-clk);

sleep(1);

printf(" - Transmitted!!");

if(p_sz_rm<=o_rate)

p_sz_rm=0;

else
p_sz_rm-=o_rate;

printf(" Bytes Remaining:%d",p_sz_rm);

if(p_time-clk>0)

printf(" \n Time left %d No packets to transmit!!",p_time-clk);

return(0);

You might also like