CN Record - Prudhvi
CN Record - Prudhvi
/*DATE :
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
AIM : Implement the data link layer framing methods such as character stuffing and bit stuffing
PROGRAM:
i) Character stuffing
#include<stdio.h>
#include<string.h>
#include<process.h>
void main()
{
int i=0,j=0,n,pos;
char a[20],b[50],ch;
printf("enter string\n");
scanf("%s",&a);
n=strlen(a);
printf("enter position\n");
scanf("%d",&pos);
if(pos>n)
{
printf("invalid position, Enter again :");
scanf("%d",&pos);
}
printf("enter the character\n");
ch=getche();
b[0]='d';
b[1]='l';
b[2]='e';
b[3]='s';
b[4]='t';
b[5]='x';
j=6;
while(i<n)
{
if(i==pos-1)
{
b[j]='d';
b[j+1]='l';
b[j+2]='e';
b[j+3]=ch;
b[j+4]='d';
b[j+5]='l';
b[j+6]='e';
j=j+7;
}
if(a[i]=='d' && a[i+1]=='l' && a[i+2]=='e')
{
b[j]='d';
b[j+1]='l';
b[j+2]='e';
j=j+3;
}
b[j]=a[i];
i++;
j++;
}
b[j]='d';
b[j+1]='l';
b[j+2]='e';
b[j+3]='e';
b[j+4]='t';
b[j+5]='x';
b[j+6]='\0';
printf("\nframe after stuffing:\n");
printf("%s",b);
}
OUTPUT:
enter string
computer
enter position
3
enter the character
n
frame after stuffing:
dlestxcodlendlemputerdleetx
ii) Bit stuffing
/*DATE :
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
PROGRAM :
#include<stdio.h>
#include<string.h>
void main()
{
int a[20],b[30],i,j,k,count,n;
printf("Enter frame length:");
scanf("%d",&n);
printf("Enter input frame (0's & 1's only):");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
i=0;
count=1;
j=0;
while(i<n)
{
if(a[i]==1)
{
b[j]=a[i];
for(k=i+1;a[k]==1 && k<n && count<5;k++)
{
j++;
b[j]=a[k];
count++;
if(count==5)
{
j++;
b[j]=0;
}
i=k;
}
}
else
{
b[j]=a[i];
}
i++;
j++;
}
printf("After stuffing the frame is:");
for(i=0;i<j;i++)
printf("%d",b[i]);
}
OUTPUT:
Enter frame length:5
Enter input frame (0's & 1's only):1
1
1
1
1
After stuffing the frame is:111110
Exercise - 2
/*DATE :
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
AIM : To Write a Program to implement data link layer farming method
checksum.
PROGRAM:
#include<stdio.h>
#include<conio.h>
int add(int, int);
int com(int);
void main()
{
int i, j, dl, dil;
int data1[10], data2[10], newdata[10], comp[10], checksum[10];
printf("\n Enter the data length=");
scanf("%d", &dl);
printf("\n Enter the data1 : \n");
for (i = 0; i < dl; i++)
scanf("%d", &data1[i]);
printf("\n Enter the data2 : \n");
for (i = 0; i < dl; i++)
scanf("%d", &data2[i]);
for (i = dl - 1; i >= 0; i--) {
newdata[i] = add(data1[i], data2[i]);
}
OUTPUT:
Enter the data length=4
Enter the data 1:
1
2
5
3
Enter the data 2:
7
5
6
4
Data 1: 1253
Data 2: 7564
The new data is: 1111
Checksum: 0000
Receiver Side:
Data: 1253 7564 0000
Addition 1111
Compliment: 0000
Exercise - 3
/*DATE:
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
AIM: Write a program for Hamming Code generation for error detection and
correction.
PROGRAM:
#include <math.h>
#include <stdio.h>
// Store input bits
int input[32];
// Store hamming code
int code[32];
int ham_calc(int, int);
void solve(int input[], int);
// Function to calculate bit for
// ith position
int ham_calc(int position, int c_l)
{
int count = 0, i, j;
i = position - 1;
// Traverse to store Hamming Code
while (i < c_l) {
// If current boit is 1
if (code[j] == 1)
count++;
}
// Update i
i = i + 2 * position;
}
if (count % 2 == 0)
return 0;
else
return 1;
}
// Function to calculate hamming code
void solve(int input[], int n)
{
int i, p_n = 0, c_l, j, k;
i = 0;
// Find msg bits having set bit
// at x'th position of number
while (n > (int)pow(2, i) - (i + 1)) {
p_n++;
i++;
}
c_l = p_n + n;
j = k = 0;
// Traverse the msgBits
for (i = 0; i < c_l; i++) {
// Driver Code
void main()
{
// Given input message Bit
input[0] = 0;
input[1] = 1;
input[2] = 1;
input[3] = 1;
int N = 4;
// Function Call
solve(input, N);
}
OUTPUT :
Exercise - 4
/*DATE :
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
AIM : Write a Program to implement on a data set of characters the three
CRC polynomials – CRC 12, CRC 16 and CRC CCIP.
PROGRAM :
#include<stdio.h>
#include<conio.h>
#include<string.h>
void main()
{
char a[50],b[50],c[50],d[50];
int i,j,k,l;
printf("Enter frame:"); /*read the frame*/
gets(a);
strcpy(d,a);
printf("Enter generated frame:"); /*read the generated frame*/
gets(b);
l=strlen(b); /*finding length of the generator*/
for(i=0;i<l-1;i++)
strcat(a,"0");
k=strlen(a); /*finding length of the frame*/
for(i=0;i<l;i++)
c[i]=a[i];
for(i=l;i<k;i++)
{
if(c[0]=='1')
{ /* performing modulo-2 operation*/
for(j=0;j<l;j++)
c[j]=c[j]^b[j];
}
else
{
for(j=0;j<1;j++)
{
if(c[j]=='0')
c[j]='0';
else
c[j]='1';
}
}
printf("\n");
if(i!=k)
{
/* performing last modulo-2 operation and finding reminder*/
for(j=0;j<(l-1);j++)
c[j]=c[j+1];
c[j]=a[i];
}
}
printf("CRC /reminder: \n");
for(i=1;i<l;i++)
printf("%c",c[i]); /*displays the crc*/
printf("\n The transmitted frame:"); /*displays the Transmitted frame*/
printf("%c",d[i]);
for(i=1;i<l;i++)
printf("%c",c[i]);
getch();
}
OUTPUT :
Enter frame:11011011
Enter generated frame :1101
CRC /remainder:000
The transmitted frame:1000
Exercise -5
/*DATE :
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
AIM : Write a Program to implement Sliding window protocol for GoBackN.
Program:
#include<stdio.h>
int main()
{
int windowsize,sent=0,ack,i;
printf("enter window size\n");
scanf("%d",&windowsize);
while(1)
{
for( i = 0; i < windowsize; i++)
{
printf("Frame %d has been transmitted.\n",sent);
sent++;
if(sent == windowsize)
break;
}
printf("\nPlease enter the last Acknowledgement received.\n");
scanf("%d",&ack);
if(ack == windowsize)
break;
else
sent = ack;
}
return 0;
Output:
Exercise - 6
/*DATE :
AUTHOR: MUDUNURI PRUDHVI SAI RAVI VARMA */
AIM : Write a Program to implement Sliding window protocol for Selective
repeat.
PROGRAM:
#include<stdio.h>
#include<conio.h>
void main()
{
char sender[50],receiver[50];
int i,winsize;
printf("\n ENTER THE WINDOWS SIZE : ");
scanf("%d",&winsize);
printf("\n SENDER WINDOW IS EXPANDED TO STORE MESSAGE OR WINDOW \
n");
printf("\n ENTER THE DATA TO BE SENT: ");
fflush(stdin);
gets(sender);
for(i=0;i<winsize;i++)
receiver[i]=sender[i];
receiver[i]=NULL;
printf("\n MESSAGE SEND BY THE SENDER:\n");
puts(sender);
printf("\n WINDOW SIZE OF RECEIVER IS EXPANDED\n");
printf("\n ACKNOWLEDGEMENT FROM RECEIVER \n");
for(i=0;i<winsize;i++);
printf("\n ACK:%d",i);
printf("\n MESSAGE RECEIVED BY RECEIVER IS : ");
puts(receiver);
printf("\n WINDOW SIZE OF RECEIVER IS SHRINKED \n");
getch();
}
OUTPUT: