Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
9 views4 pages

Stop and Wait

Lab program

Uploaded by

Jobin Luckose
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views4 pages

Stop and Wait

Lab program

Uploaded by

Jobin Luckose
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

/*******************************************************************************/

Name : Anandu Murali Roll No :16

SLIDING WNDOW PROTOCOL

(Stop and Wait ARQ)

Date : 22/04/2024 Experiment No : 10

/******************************************************************************/

Client Program

#include<stdio.h>

#include<string.h>

#include<netinet/in.h>

#include<stdlib.h>

#include<arpa/inet.h>

#include<sys/types.h>

#include<sys/socket.h>

#include<unistd.h>

void main() {

printf("\nSearching for server... \n");

struct sockaddr_in servaddr;

int sockfd = socket(AF_INET, SOCK_DGRAM, 0);

memset(&servaddr, 0 , sizeof(servaddr));

servaddr.sin_family = AF_INET;

servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

servaddr.sin_port = htons(5600);

int n = -1 , len, ack;

sendto(sockfd, &n, sizeof(n),0 , (struct sockaddr*)&servaddr, sizeof(servaddr));

printf("\nServer connected successfully!\n");

printf("\nEnter total number of frames : ");

scanf("%d", &n);

sendto(sockfd, &n, sizeof(n),0 , (struct sockaddr*)&servaddr, sizeof(servaddr));

for (int i=1; i<=n; i++) {

ack = -1;
do {

printf("\nSending frames %d", i);

sendto(sockfd, &i, sizeof(n),0 , (struct sockaddr*)&servaddr,

sizeof(servaddr));

printf("\nWaiting for ACK...\n");

recvfrom(sockfd, &ack, sizeof(n),0 , (struct sockaddr*)&servaddr, sizeof(len));

if (ack == -1) {

printf("\nNegative ACK received... Resending... \n");

} while (ack == -1);

n = -99;

sendto(sockfd, &n, sizeof(n),0 , (struct sockaddr*)&servaddr, sizeof(servaddr));

printf("\nSuccessfully sent all frames!");

close(sockfd);

Server Program

#include<stdio.h>

#include<string.h>

#include<netinet/in.h>

#include<stdlib.h>

#include<arpa/inet.h>

#include<sys/types.h>

#include<sys/socket.h>

#include<unistd.h>

void main() {

printf("\nWaiting for client.... \n");

struct sockaddr_in servaddr, cliaddr;

int sockfd = socket(AF_INET, SOCK_DGRAM, 0);


memset(&servaddr, 0 , sizeof(servaddr));

memset(&cliaddr, 0 , sizeof(cliaddr));

servaddr.sin_family = AF_INET;

servaddr.sin_addr.s_addr = htonl(INADDR_ANY);

servaddr.sin_port = htons(5600);

bind(sockfd, (struct sockaddr*)&servaddr, sizeof(servaddr));

int len = sizeof(cliaddr);

int frames[100], n , p, ack;

recvfrom(sockfd, &n, sizeof(n), 0, (struct sockaddr*)&cliaddr, &len);

printf("\nClient connected successfully!\n");

printf("Waiting from total number of frames");

recvfrom(sockfd, &n, sizeof(n), 0, (struct sockaddr*)&cliaddr, &len);

while (1) {

recvfrom(sockfd, &p, sizeof(n),0,(struct sockaddr*)&cliaddr, &len);

if (p == -99)

break;

printf("\nReceived frame %d ", p);

printf("\nEnter 1 for +ve ACK and -1 for -ve ACK");

scanf("%d", &ack);

sendto(sockfd, &ack, sizeof(n),0, (struct sockaddr*)&cliaddr, sizeof(cliaddr));

OUTPUT

Server

Waiting for client....

Client connected successfully!

Waiting from total number of frames

Received frame 1

Enter 1 for +ve ACK and -1 for -ve ACK1

Received frame 2
Enter 1 for +ve ACK and -1 for -ve ACK1

Received frame 3

Enter 1 for +ve ACK and -1 for -ve ACK-1

Received frame 3

Enter 1 for +ve ACK and -1 for -ve ACK1

Received frame 4

Enter 1 for +ve ACK and -1 for -ve ACK1

Client

Searching for server...

Server connected successfully!

Enter total number of frames : 4

Sending frames 1

Waiting for ACK...

Sending frames 2

Waiting for ACK...

Sending frames 3

Waiting for ACK...

Negative ACK received... Resending...

Sending frames 3

Waiting for ACK...

Sending frames 4

Waiting for ACK...

Successfully sent all frames!

/***********************************************************************/

You might also like