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

Write A Program For Error Detecting Code Using CRC-CCITT (16bit)

The document describes a program for implementing the distance vector algorithm to find the shortest path between nodes in a network. It defines a structure to store routing tables for each node with the neighbor node ID, distance and next hop. It initializes the tables and accepts input for direct distances. It then runs the distance vector algorithm to calculate indirect distances and update the tables. The updated tables are displayed and the shortest path between selected nodes is printed.

Uploaded by

Megan_1234
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)
57 views

Write A Program For Error Detecting Code Using CRC-CCITT (16bit)

The document describes a program for implementing the distance vector algorithm to find the shortest path between nodes in a network. It defines a structure to store routing tables for each node with the neighbor node ID, distance and next hop. It initializes the tables and accepts input for direct distances. It then runs the distance vector algorithm to calculate indirect distances and update the tables. The updated tables are displayed and the shortest path between selected nodes is printed.

Uploaded by

Megan_1234
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/ 39

1.

Write a program for error detecting code using CRC-CCITT (16bit)

#include<stdio.h>
char m[50],g[50],r[50],q[50],temp[50];
void caltrans(int);
void crc(int);
void calram();
void shiftl();

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("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("\ngenerator:%s\n",g);
crc(n);
printf("\n\nquotient:%s",q);
caltrans(n);
printf("\ntransmitted frame:%s",m);
printf("\nEnter transmitted freme:");
scanf("\n%s",m);

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

1 of 39

printf("CRC checking\n");
crc(n);
printf("\n\nlast remainder:%s",r);
for(i=0;i<16;i++)
if(r[i]!='0')
flag=1;
else
continue;
if(flag==1)
printf("Error during transmission");
else
printf("\n\nReceived freme is correct");
}
void crc(int n)
{
int i,j;
for(i=0;i<n;i++)
temp[i]=m[i];
for(i=0;i<16;i++)
r[i]=m[i];
printf("\nintermediate remainder\n");
for(i=0;i<n-16;i++)
{
if(r[0]=='1')
{
q[i]='1';
calram();
}
else
{
q[i]='0';

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

2 of 39

shiftl();
}
r[16]=m[17+i];
r[17]='\0';
printf("\nremainder %d:%s",i+1,r);
for(j=0;j<=17;j++)
temp[j]=r[j];
}
q[n-16]='\0';
}
void calram()
{
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 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';
}

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

3 of 39

OUTPUT:-

[root@localhost nwcn]# vi 1.c


[root@localhost nwcn]# cc 1.c
[root@localhost nwcn]# ./a.out
Enter the binary data
1011
The msg before adding checksum:
10110000000000000000
The checksum calculated:
1011000101101011
The code word is:10111011000101101011
Enter the transmitted code word
10111011000101101011
Received msg:10111011000101101011
The checksum is:0000000000000000
No error in the msg
[root@localhost nwcn]# cc 1.c
[root@localhost nwcn]# ./a.out
Enter the binary data
1101
The msg before adding checksum:
11010000000000000000
The checksum calculated:
1101000110101101
The code word is:11011101000110101101
Enter the transmitted code word
10111101000110101101
Received msg:10111101000110101101
The checksum is:0110000011000110
Error in the msg

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

4 of 39

PROGRAM # 2: Frame sorting technique used in buffers.

#include<stdio.h>
#include<string.h>
#define FRAM_TXT_SIZ 3
#define MAX_NOF_FRAM 127
char str[FRAM_TXT_SIZ*MAX_NOF_FRAM];
struct frame

// structure maintained to hold frames

char text[FRAM_TXT_SIZ];
int seq_no;
}fr[MAX_NOF_FRAM], shuf_ary[MAX_NOF_FRAM];
int assign_seq_no()
{

int k=0,i,j;

//function which splits message


//into frames and assigns sequence no

for(i=0; i < strlen(str); k++)


{
fr[k].seq_no = k;
for(j=0; j < FRAM_TXT_SIZ && str[i]!='\0'; j++)
fr[k].text[j] = str[i++];
}
printf("\nAfter assigning sequence numbers:\n");
for(i=0; i < k; i++)
printf("%d:%s ",i,fr[i].text);
return k;
//k gives no of frames
}
void generate(int *random_ary, const int limit)
{
int r, i=0, j;
while(i < limit)
{
r = random() % limit;
for(j=0; j < i; j++)
if( random_ary[j] == r )
break;
if( i==j )
random_ary[i++] = r;
}
}
void shuffle( const int no_frames )
{
int i, k=0, random_ary[no_frames];

//generate array of random nos

// function shuffles the frames

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

5 of 39

generate(random_ary, no_frames);
for(i=0; i < no_frames; i++)
shuf_ary[i] = fr[random_ary[i]];
printf("\n\nAFTER SHUFFLING:\n");
for(i=0; i < no_frames; i++)
printf("%d:%s ",shuf_ary[i].seq_no,shuf_ary[i].text);
}
void sort(const int no_frames)
// sorts the frames
{
int i,j,flag=1;
struct frame hold;
for(i=0; i < no_frames-1 && flag==1; i++) // search for frames in sequence
{
flag=0;
for(j=0; j < no_frames-1-i; j++) //(based on seq no.) and display
if(shuf_ary[j].seq_no > shuf_ary[j+1].seq_no)
{
hold = shuf_ary[j];
shuf_ary[j] = shuf_ary[j+1];
shuf_ary[j+1] = hold;
flag=1;
}
}
}
int main()
{
int no_frames,i;
printf("Enter the message: ");
gets(str);
no_frames = assign_seq_no();
shuffle(no_frames);
sort(no_frames);
printf("\n\nAFTER SORTING\n");
for(i=0;i<no_frames;i++)
printf("%s",shuf_ary[i].text);
printf("\n\n");
}
OUTPUT:

[root@localhost nwcn]# ./a.out


Enter the message: Welcome To Acharya Institute of Technology
After assigning sequence numbers:

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

6 of 39

0:Wel 1:com 2:e T 3:o A 4:cha 5:rya 6: In 7:sti 8:tut 9:e o 10:f T 11:ech 12:nol 13:ogy
AFTER SHUFFLING:
1:com 4:cha 9:e o 5:rya 3:o A 10:f T 2:e T 6: In 11:ech 13:ogy 0:Wel 8:tut 12:nol 7:sti
AFTER SORTING
Welcome To Acharya Institute of Technology

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

7 of 39

3. Write a program for distance vector algorithm to find suitable path for transmission

#include<stdlib.h>
#define nul 1000
#define nodes 10

int no;

struct node
{
int a[nodes][4];
}router[nodes];

void init(int r)
{
int i;
for(i=1;i<=no;i++)
{
router[r].a[i][1]=i;
router[r].a[i][2]=999;
router[r].a[i][3]=nul;
}
router[r].a[r][2]=0;
router[r].a[r][3]=r;
}

void inp(int r)
{

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

8 of 39

int i;
printf("\nEnter dist from the node %d to other nodes",r);
printf("\nPls enter 999 if there is no direct route\n",r);
for(i=1;i<=no;i++)
{
if(i!=r)
{
printf("\nEnter dist to the node %d:",i);
scanf("%d",&router[r].a[i][2]);
router[r].a[i][3]=i;
}
}
}

void display(int r)
{
int i,j;
printf("\n\nThe routing table for node %d is as follows:",r);
for(i=1;i<=no;i++)
{
if(router[r].a[i][2]>=999)
printf("\n\t\t\t %d \t no link \t no hop",router[r].a[i][1]);
else
printf("\n\t\t\t %d \t %d \t\t d",router[r].a[i][1],router[r].a[i][2],router[r].a[i][3]);
}
}

void dv_algo(int r)
{
int i,j,z;
for(i=1;i<=no;i++)

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

9 of 39

{
if(router[r].a[i][2]!=999 && router[r].a[i][2]!=0)
{
for(j=1;j<=no;j++)
{
z=router[r].a[i][2]+router[i].a[j][2];
if(router[r].a[j][2]>z)
{
router[r].a[j][2]=z;
router[r].a[j][3]=i;
}
}
}
}
}

int main()
{
int i,j,x,y;
char choice;
printf("Enter the no. of nodes required (less than 10 pls):");
scanf("%d",&no);
for(i=1;i<=no;i++)
{
init(i);
inp(i);
}
printf("\nThe configuration of the nodes after initialization is as follows:");
for(i=1;i<=no;i++)
display(i);
for(i=1;i<=no;i++)

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

10 of 39

dv_algo(i);
printf("\nThe configuration of the nodes after computation of paths is as follows:");
for(i=1;i<=no;i++)
display(i);
while(1)
{
printf("\n\nWanna continue (y/n):");
scanf("%c",&choice);
if(choice=='n')
break;
printf("\nEnter the nodes btn which shortest path is to be found:\n");
scanf("%d %d",&x,&y);
printf("\nThe length of the shortest path is %d",router[x].a[y][2]);
}
}

[root@localhost ~]# ./a.out


Enter the no. of nodes required (less than 10 pls):4

Enter dist from the node 1 to other nodes


Pls enter 999 if there is no direct route

Enter dist to the node 2:5

Enter dist to the node 3:3

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

11 of 39

Enter dist to the node 4:7

Enter dist from the node 2 to other nodes


Pls enter 999 if there is no direct route

Enter dist to the node 1:5

Enter dist to the node 3:999

Enter dist to the node 4:6

Enter dist from the node 3 to other nodes


Pls enter 999 if there is no direct route

Enter dist to the node 1:3\

Enter dist to the node 2:


Enter dist to the node 4:
Enter dist from the node 4 to other nodes
Pls enter 999 if there is no direct route

Enter dist to the node 1:

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

12 of 39

Enter dist to the node 2:


Enter dist to the node 3:
The configuration of the nodes after initialization is as follows:

The routing table for node 1 is as follows:


1

The routing table for node 2 is as follows:


1

no link

no hop

The routing table for node 3 is as follows:


1

no link

no hop

no link

no hop

The routing table for node 4 is as follows:

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

13 of 39

no link

no hop

no link

no hop

no link

no hop

The configuration of the nodes after computation of paths is as follows:

The routing table for node 1 is as follows:


1

The routing table for node 2 is as follows:


1

The routing table for node 3 is as follows:


1

10

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

14 of 39

The routing table for node 4 is as follows:


1

no link

no hop

no link

no hop

no link

no hop

Wanna continue (y/n):


Enter the nodes btn which shortest path is to be found:
^C
[root@localhost ~]# clear

[root@localhost ~]# ./a.out


Enter the no. of nodes required (less than 10 pls):4

Enter dist from the node 1 to other nodes


Pls enter 999 if there is no direct route

Enter dist to the node 2:5

Enter dist to the node 3:3

Enter dist to the node 4:7

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

15 of 39

Enter dist from the node 2 to other nodes


Pls enter 999 if there is no direct route

Enter dist to the node 1:5

Enter dist to the node 3:999

Enter dist to the node 4:6

Enter dist from the node 3 to other nodes


Pls enter 999 if there is no direct route

Enter dist to the node 1:3

Enter dist to the node 2:999

Enter dist to the node 4:2

Enter dist from the node 4 to other nodes


Pls enter 999 if there is no direct route

Enter dist to the node 1:7

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

16 of 39

Enter dist to the node 2:6

Enter dist to the node 3:2

The configuration of the nodes after initialization is as follows:

The routing table for node 1 is as follows:


1

The routing table for node 2 is as follows:


1

no link

no hop

The routing table for node 3 is as follows:


1

no link

no hop

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

17 of 39

The routing table for node 4 is as follows:


1

The configuration of the nodes after computation of paths is as follows:

The routing table for node 1 is as follows:


1

The routing table for node 2 is as follows:


1

The routing table for node 3 is as follows:


1

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

18 of 39

The routing table for node 4 is as follows:


1

Wanna continue (y/n):


Enter the nodes btn which shortest path is to be found:
14

The length of the shortest path is 7

Wanna continue (y/n):


Enter the nodes btn which shortest path is to be found:

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

19 of 39

4. Using TCP or IP sockets write a client/server program to make client send the name of a
file and server to send back the contents of the requested file if present.

Client Side:
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
int main(int argc,char *argv[])
{
int sockfd,newsockfd,portno,len,n;
char buffer[256],c[20000];
struct sockaddr_in serv,cli;
FILE *fd;
if(argc<2)
{
printf("Err:no port no.\nusage:\n./client portno\n ex:./client 7777\n");
exit(1);
}
sockfd=socket(AF_INET,SOCK_STREAM,0);
bzero((char *)&serv,sizeof(serv));
portno=atoi(argv[1]);
serv.sin_family=AF_INET;
serv.sin_port=htons(portno);
if(connect(sockfd,(struct sockaddr *)&serv,sizeof(serv))<0)
{
printf("server not responding..\n\n\n\ti am to terminate\n");
exit(1);
}
printf("Enter the file with complete path\n");

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

20 of 39

scanf("%s",&buffer);
if(write(sockfd,buffer,strlen(buffer))<0)
printf("Err writing to socket..\n");
bzero(c,2000);
printf("Reading..\n..\n");
if(read(sockfd,c,1999)<0)
printf("error: read error\n");
printf("client: display content of %s\n..\n",buffer);
fputs(c,stdout);
printf("\n..\n");
return 0;
}

Server Side:

#include<stdio.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<netdb.h>

int main(int argc,char *argv[])


{
int sockfd,newsockfd,portno,len,n;
char buffer[256],c[2000],cc[20000];
struct sockaddr_in serv,cli;
FILE *fd;
if(argc<2)
{
printf("erroe:no port no\n usage:\n/server port no\n");
exit(1);

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

21 of 39

}
sockfd=socket(AF_INET,SOCK_STREAM,0);
portno=atoi(argv[1]);
serv.sin_family=AF_INET;
serv.sin_addr.s_addr=INADDR_ANY;
serv.sin_port=htons(portno);
bind(sockfd,(struct sockaddr *)&serv,sizeof(serv));
listen(sockfd,10);
len=sizeof(cli);
printf("serve:\nwaiting for connection\n");
newsockfd=accept(sockfd,(struct sockaddr *)&cli,&len);
bzero(buffer,255);
n=read(newsockfd,buffer,255);
printf("\nserver recv:%s\n",buffer);
if((fd=fopen(buffer,"r"))!=NULL)
{
printf("server:%s found\n opening and reading..\n",buffer);
printf("reading..\n..reading complete");
fgets(cc,2000,fd);
while(!feof(fd))
{
fgets(c,2000,fd);
strcat(cc,c);
}
n=write(newsockfd,cc,strlen(cc));
if(n<0)
printf("error writing to socket");
printf("\ntransfer complete\n");
}
else
{

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

22 of 39

printf("server:file not found\n");


n=write(newsockfd,"file not foung",15);
if(n<0)
printf("error: writing to socket..\n");
}
return 0;
}

Output:

Server part output

[root@localhost ~]# ./a.out 4455


server online
waiting for request...
server:(null) found!
transfering the contentserver:transfer completed
Segmentation fault
[root@localhost ~]#

client part output


[root@localhost ~]# ./a.out 4455
waiting for serverserver is online
client enter the path2.c
File Recieved:Display Contents#include<stdio.h>
struct frame{
int fslno;
char data[5];
}arr[10];
sort(int n)
{
struct frame temp;
int i,j,ex;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

23 of 39

if(arr[j].fslno>arr[j+1].fslno)
{
temp=arr[j];
ar

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

24 of 39

5. Implement the above program using as Message queue or FIFOs as IPC channels.
Server Side:
#include<stdio.h>
#include<fcntl.h>
#include<sys/stat.h>
#define fifo1 "fifo1"
#define fifo2 "fifo2"
int main()
{
char p[100],c[100];
int fd1,fd2,fd,i;
for(i=0;i<100;i++)
c[i]=p[i]='\0';
mknod(fifo1,S_IFIFO|0777,0);
mknod(fifo2,S_IFIFO|0777,0);
printf("server online\n waiting for request...\n");
fd1=open(fifo1,O_RDONLY);
read(fd1,p,100);
if((fd=open(p,O_RDONLY))<0)
{
printf("\n server:file %s not found\n",p);
exit(1);
}
printf("\n server:%s found!\n transfering the content");
read(fd,c,1000);
fd2=open(fifo2,O_WRONLY);
write(fd2,c,strlen(c));
printf("server:transfer completed\n");
}

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

25 of 39

Client Side:

#include<stdio.h>
#include<fcntl.h>
#include<sys/stat.h>
#define fifo1 "fifo1"
#define fifo2 "fifo2"

int main()
{
char p[100],c[100],ch;
int fd1,fd2,fd,i;
for(i=0;i<100;i++)
c[i]=p[i]='\0';
mknod(fifo1,S_IFIFO|0777,0);
mknod(fifo2,S_IFIFO|0777,0);
printf("waiting for server");
fd1=open(fifo1,O_WRONLY);
printf("server is online\n client enter the path");
i=0;
while(1)
{
ch=getchar();
if(ch=='\n')
break;
p[i++]=ch;
}
p[i]='\0';
write(fd1,p,strlen(p));
if((fd=open(p,O_RDONLY))<0)
{

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

26 of 39

printf("error file not found!enter valid path name\n\n",p);


exit(1);
}
fd2=open(fifo2,O_RDONLY);
read(fd2,c,1000);
printf("File Recieved:Display Contents");
fputs(c,stdout);
printf("\n\n");
}

Output:
Server part output

[root@localhost ~]# ./a.out


server online
waiting for request...
server:(null) found!
transfering the contentserver:transfer completed
Segmentation fault
[root@localhost ~]#

client part output


[root@localhost ~]# ./a.out
waiting for serverserver is online
client enter the path2.c
File Recieved:Display Contents#include<stdio.h>
struct frame{
int fslno;
char data[5];
}arr[10];
sort(int n)
{
struct frame temp;
int i,j,ex;
for(i=0;i<n-1;i++)
{

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

27 of 39

for(j=0;j<n-i-1;j++)
if(arr[j].fslno>arr[j+1].fslno)
{
temp=arr[j];
ar

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

28 of 39

6. Write a program for simple RSA algorithm to encrypt and decrypt the data

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

unsigned long modexp(unsigned long msg,unsigned long exp,unsigned long n)


{
unsigned long i,k=1;
for(i=0;i<exp;i++)
k=(k*msg)%n;
return k;
}

int main()
{
unsigned long p,q,e,d,n,z,i,C,M;
int len;
char data[100];
system("clear");
printf("Enter the value of P and Q (such that p*q>255 and p not equal to q)\n");
scanf("%lu%lu",&p,&q);
n=p*q;
z=(p-1)*(q-1);
for(i=1;i<z;i++)
{
if((z%i)==0)
continue;
else
break;

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

29 of 39

}
e=i;
printf("\nEncryption key is :%lu",e);
for(i=1;i<z;i++)
if(((e*i-1)%z)==0)
break;
d=i;
printf("\ndecryption key is :%lu",d);
printf("\npls enter the message:");
scanf("%s",data);
len=strlen(data);
for(i=0;i<len;i++)
{
M=(unsigned long)data[i];
C=modexp(M,e,n);
printf("\nencrypted value and its char representation:%lu\t%c\n",C,C);
M=modexp(C,d,n);
printf("\ndecrypted value and its char representation:%lu\t%c\n",M,M);
}
return 0;
}
Output:
[root@localhost ~]# ./a.out

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

30 of 39

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

31 of 39

Enter the value of P and Q (such that p*q>255 and p not equal to q)
31
37

Encryption key is :7
decryption key is :463
pls enter the message:computer

encrypted value and its char representation:657

decrypted value and its char representation:99 c

encrypted value and its char representation:629 u

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

32 of 39

decrypted value and its char representation:111 o

encrypted value and its char representation:1093

decrypted value and its char representation:109 m

encrypted value and its char representation:38 &

decrypted value and its char representation:112 p

encrypted value and its char representation:623 o

decrypted value and its char representation:117 u

encrypted value and its char representation:277 #

decrypted value and its char representation:116 t

encrypted value and its char representation:64 @

decrypted value and its char representation:101 e

encrypted value and its char representation:1003

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

33 of 39

decrypted value and its char representation:114 r


put:

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

34 of 39

PROGRAM # 7:- Program for hamming code generation for error detection/correction
#include<stdlib.h>
#include<stdio.h>
char data[5];
int encoded[8], edata[7], syndrome[3];
int hmatrix[3][7]= { 1,0,0,0,1,1,1,
0,1,0,1,0,1,1,
0,0,1,1,1,0,1};
char gmatrix[4][8]={ "0111000", "1010100", "1100010", "1110001"};
int main()
{
int i,j;
system("clear");
printf("Hamming Code --- Encoding\n");
printf("Enter 4 bit data : ");
scanf("%s",data);
printf("Generator Matrix\n");
for(i=0;i<4;i++)
printf("\t %s \n",gmatrix[i]);
printf("Encoded Data : ");
for(i=0;i<7;i++)
{
for(j=0;j<4;j++)
encoded[i]+=((data[j]- '0')*(gmatrix[j][i]- '0'));
encoded[i]=encoded[i]%2;
printf("%d",encoded[i]);
}
printf("\nHamming code --- Decoding\n");
printf("Enter Encoded bits as received : ");
for(i=0;i<7;i++)
scanf("%d",&edata[i]);
for(i=0;i<3;i++)
{
for(j=0;j<7;j++)
syndrome[i]=syndrome[i]+(edata[j]*hmatrix[i][j]);
syndrome[i]=syndrome[i]%2;
}
for(j=0;j<7;j++)
if ((syndrome[0]==hmatrix[0][j])&&(syndrome[1]==hmatrix[1][j])&&
(syndrome[2]==hmatrix[2][j]))
break;
if(j==7)
printf("Data is error free!!\n");
else {
printf("Error received at bit number %d of the data\n",j+1);
edata[j]=!edata[j];

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

35 of 39

printf("The Correct data Should be : ");


for(i=0;i<7;i++) printf(" %d ",edata[i]);
}
}
Output:

[root@localhost nwcn]# cc 7.c


[root@localhost nwcn]# ./a.out
Hamming Code --- Encoding
Enter 4 bit data : 1001
Generator Matrix
0111000
1010100
1100010
1110001
Encoded Data : 1001001
Hamming code --- Decoding
Enter Encoded bits as received : 1
001001
Data is error free!!
[root@localhost nwcn]# cc 7.c
[root@localhost nwcn]# ./a.out
Hamming Code --- Encoding
Enter 4 bit data : 1011
Generator Matrix
0111000
1010100
1100010
1110001
Encoded Data : 0101011
Hamming code --- Decoding
Enter Encoded bits as received : 0 1 0 1 0 1 0
Error received at bit number 7 of the data
The Correct data Should be : 0 1 0 1 0 1 1

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

36 of 39

Program # 8: Program for congestion control using Leaky Bucket algorithm.


#include<stdio.h>
int rand(int a)
{
int rn=(random()%10)%a;
return rn==0?1:rn;
}
int main()
{
int packet_sz[5],i,clk,b_size,o_rate,p_sz_rm=0,p_sz,p_time;
for(i=0;i<5;++i)
packet_sz[i]=rand(6)*10;
for(i=0;i<5;++i)
printf("packet[%d]:%d bytes\t",i,packet_sz[i]);
printf("\nEnter the Output rate:");
scanf("%d",&o_rate);
printf("Enter the Bucket Size:");
scanf("%d",&b_size);
for(i=0; i<5; ++i)
{
if((packet_sz[i]+p_sz_rm) > b_size)
if(packet_sz[i] > b_size)
printf("\n\nIncomming packet size (%d) is Greater than bucket
capacity-PACKET REJECTED",packet_sz[i]);
else
printf("\n\nBucket capacity exceeded-REJECTED!!");
else
{
p_sz_rm+=packet_sz[i];
printf("\n\nIncomming Packet size: %d",packet_sz[i]);
printf("\nBytes remaining to Transmit: %d",p_sz_rm);
p_time = rand(4)*10;
printf("\nTime left for transmission: %d units",p_time);
for(clk=10; clk<=p_time; clk+=10)
{
sleep(1);
if(p_sz_rm)
{
if(p_sz_rm <= o_rate)
printf("\n Packet of size %d
Transmitted",p_sz_rm),
p_sz_rm=0;
else
printf("\n Packet of size %d Transmitted",o_rate),
p_sz_rm -= o_rate;
printf("----Bytes Remaining after Transmission:
%d",p_sz_rm);

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

37 of 39

}
else
printf("\n No packets to transmit!!");
printf(" Time Left:%d",p_time-clk);
}
}
}
}
OUTPUT:
[root@localhost nwcn]# vi 8.c
[root@localhost nwcn]# cc 8.c
[root@localhost nwcn]# ./a.out
packet[0]:30 bytes
packet[4]:30 bytes

packet[1]:10 bytes

packet[2]:10 bytes

packet[3]:50 bytes

Enter the Output rate:20


Enter the Bucket Size:50
Incomming Packet size: 30
Bytes remaining to Transmit: 30
Time left for transmission: 10 units
Packet of size 20 Transmitted----Bytes Remaining after Transmission: 10 Time Left:0
Incomming Packet size: 10
Bytes remaining to Transmit: 20
Time left for transmission: 20 units
Packet of size 20 Transmitted----Bytes Remaining after Transmission: 0 Time Left:10
No packets to transmit!! Time Left:0
Incomming Packet size: 10
Bytes remaining to Transmit: 10
Time left for transmission: 20 units
Packet of size 10 Transmitted----Bytes Remaining after Transmission: 0 Time Left:10
No packets to transmit!! Time Left:0
Incomming Packet size: 50
Bytes remaining to Transmit: 50
Time left for transmission: 10 units
Packet of size 20 Transmitted----Bytes Remaining after Transmission: 30 Time Left:0
Bucket capacity exceeded-REJECTED!!

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

38 of 39

www.bookspar.com | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS | FORUMS

39 of 39

You might also like