๐ŸŒ
B.TECH III YEAR โ€ข I SEMESTER โ€ข R22

Computer Networks - Lab Manual

Computer Networks Laboratory โ€ข Program Solution

๐Ÿ“˜ R22 Regulation ๐ŸŽ“ III Year ๐Ÿ“š I Semester ๐ŸŒ Computer Networks ๐Ÿงช Lab Program
Selected Program

Write a program for frame sorting techniques used in buffers.

โ† All Computer Networks Programs

Frame sorting technique used in buffers.


Source Code:

File Name: frame_sorting.c

#include<stdio.h>
#include <stdlib.h>
#include <string.h>

#define FRAME_TEXT_SIZE 3      // Each frame holds 3 characters
#define MAX_NO_OF_FRAMES 127   // Maximum number of frames supported

char inputMessage[FRAME_TEXT_SIZE * MAX_NO_OF_FRAMES]; // Buffer to store the original message

// Frame structure to hold individual fragments of the message
struct Frame {
    char text[FRAME_TEXT_SIZE];
    int sequenceNumber;
} frames[MAX_NO_OF_FRAMES], shuffledFrames[MAX_NO_OF_FRAMES];

// Function to split the message into frames and assign sequence numbers
int assignSequenceNumbers() {
    int i = 0, j = 0, frameIndex = 0;
    
    while (i < strlen(inputMessage)) {
        frames[frameIndex].sequenceNumber = frameIndex;
        for (j = 0; j < FRAME_TEXT_SIZE && inputMessage[i] != '\0'; j++)
            frames[frameIndex].text[j] = inputMessage[i++];
        frameIndex++;
    }

    printf("\nAfter assigning sequence numbers:\n");
    for (i = 0; i < frameIndex; i++)
        printf("%d:%s ", frames[i].sequenceNumber, frames[i].text);

    return frameIndex;  // Return total number of frames created
}

// Utility to generate an array of unique random indices for shuffling
void generateRandomArray(int *randomArray, int limit) {
    int r, i = 0, j;
    while (i < limit) {
        r = rand() % limit;
        for (j = 0; j < i; j++)
            if (randomArray[j] == r)
                break;
        if (i == j)  // r is unique
            randomArray[i++] = r;
    }
}

// Shuffle the frames based on random sequence numbers
void shuffleFrames(int totalFrames) {
    int randomIndices[totalFrames];
    generateRandomArray(randomIndices, totalFrames);

    for (int i = 0; i < totalFrames; i++)
        shuffledFrames[i] = frames[randomIndices[i]];

    printf("\n\nAfter shuffling:\n");
    for (int i = 0; i < totalFrames; i++)
        printf("%d:%s ", shuffledFrames[i].sequenceNumber, shuffledFrames[i].text);
}

// Sort the shuffled frames based on their original sequence numbers
void sortFrames(int totalFrames) {
    int i, j, swapped;
    struct Frame temp;

    for (i = 0; i < totalFrames - 1; i++) {
        swapped = 0;
        for (j = 0; j < totalFrames - i - 1; j++) {
            if (shuffledFrames[j].sequenceNumber > shuffledFrames[j + 1].sequenceNumber) {
                temp = shuffledFrames[j];
                shuffledFrames[j] = shuffledFrames[j + 1];
                shuffledFrames[j + 1] = temp;
                swapped = 1;
            }
        }
        if (!swapped) break; // Optimization: Break if already sorted
    }
}

int main() {
    int totalFrames;

    printf("Enter the message: ");
    fgets(inputMessage, sizeof(inputMessage), stdin);
    
    // Remove newline character if present
    size_t len = strlen(inputMessage);
    if (len > 0 && inputMessage[len - 1] == '\n')
        inputMessage[len - 1] = '\0';

    // Split into frames, shuffle them, then sort to recover original message
    totalFrames = assignSequenceNumbers();
    shuffleFrames(totalFrames);
    sortFrames(totalFrames);

    // Display the final reconstructed message
    printf("\n\nAfter sorting (Reconstructed message):\n");
    for (int i = 0; i < totalFrames; i++)
        printf("%s", shuffledFrames[i].text);
    printf("\n\n");

    return 0;
}


Output:


$ gcc frame_sorting.c
$ ./a.out
Enter the message: Study Glance

After assigning sequence numbers:
0:Stu 1:dy  2:Gla 3:nce

After shuffling:
3:nce 2:Gla 1:dy  0:Stu

After sorting (Reconstructed message):
Study Glance



๐Ÿ’ป Run This C Program

Write a program for frame sorting techniques used in buffers.
The selected C program is loaded automatically into the editor. Edit the program, provide input through STDIN if required and click Run.

The compiler is embedded using OneCompiler. Your C program runs inside the embedded C environment; Study Glance does not execute C code directly on your web server. Enter the input values of the program in the STDIN box before clicking Run.
โ† Back to Computer Networks Lab Programs ๐Ÿ“š All Lab Manuals