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

Program 3

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

Program 3

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

3.

Implementation of Sliding Window Protocol Select Repeat ARQ

Aim : Implementation of Sliding Window Protocol Select Repeat ARQ


Program
#include <stdio.h>

#include <stdlib.h>

#include <stdbool.h>

#define WINDOW_SIZE 4

#define FRAME_COUNT 8

// Data structure for frames

typedef struct {

int sequence_number;

bool is_acknowledged;

char data;

} Frame;

// Sender function

void sender(Frame frames[], int total_frames) {

int base = 0;

int next_seq = 0;

while (base < total_frames) {

// Send frames in the window

for (int i = base; i < base + WINDOW_SIZE && i < total_frames; i++) {

if (!frames[i].is_acknowledged) {

printf("Sending frame %d: %c\n", frames[i].sequence_number, frames[i].data);

// Simulate acknowledgment reception


int ack;

printf("Enter the last acknowledged frame number (or -1 to exit): ");

scanf("%d", &ack);

if (ack == -1) {

break;

// Mark frames as acknowledged

for (int i = base; i <= ack; i++) {

frames[i].is_acknowledged = true;

// Slide the window

while (base < total_frames && frames[base].is_acknowledged) {

base++;

// Receiver function

void receiver(Frame frames[], int total_frames) {

for (int i = 0; i < total_frames; i++) {

printf("Received frame %d: %c\n", frames[i].sequence_number, frames[i].data);

int main() {

Frame frames[FRAME_COUNT];
// Initialize frames with data and sequence numbers

for (int i = 0; i < FRAME_COUNT; i++) {

frames[i].sequence_number = i;

frames[i].is_acknowledged = false;

frames[i].data = 'A' + i;

printf("Sender:\n");

sender(frames, FRAME_COUNT);

printf("\nReceiver:\n");

receiver(frames, FRAME_COUNT);

return 0;

Sender:

Sending frame 0: A

Sending frame 1: B

Sending frame 2: C

Sending frame 3: D

Enter the last acknowledged frame number (or -1 to exit): 2

Sending frame 3: D

Sending frame 4: E

Sending frame 5: F

Sending frame 6: G

Enter the last acknowledged frame number (or -1 to exit): 5

Sending frame 6: G

Sending frame 7: H
Enter the last acknowledged frame number (or -1 to exit): 7

Receiver:

Received frame 0: A

Received frame 1: B

Received frame 2: C

Received frame 3: D

Received frame 4: E

Received frame 5: F

You might also like