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

Program 3

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)
4 views

Program 3

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

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