Program 3
Program 3
#include <stdlib.h>
#include <stdbool.h>
#define WINDOW_SIZE 4
#define FRAME_COUNT 8
typedef struct {
int sequence_number;
bool is_acknowledged;
char data;
} Frame;
// Sender function
int base = 0;
int next_seq = 0;
for (int i = base; i < base + WINDOW_SIZE && i < total_frames; i++) {
if (!frames[i].is_acknowledged) {
scanf("%d", &ack);
if (ack == -1) {
break;
frames[i].is_acknowledged = true;
base++;
// Receiver function
int main() {
Frame frames[FRAME_COUNT];
// Initialize frames with data and sequence numbers
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
Sending frame 3: D
Sending frame 4: E
Sending frame 5: F
Sending frame 6: G
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