Computer Networks DA3: Name - Soham Bandyopadhyay REG NO. - 21BCE2386

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 12

COMPUTER NETWORKS

DA3

NAME – SOHAM BANDYOPADHYAY


REG NO. – 21BCE2386
Q

CODE
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

struct frame
{
char ack;
int data;
} frm[10];

int goback(int n)
{
int r;
for (int i = 1; i <= n; i++)
{
printf("\nEnter data for packets[%d]", i);
scanf("%d", &frm[i].data);
frm[i].ack = 'y';
}
rand();
r = rand() % n;
frm[r].ack = 'n';
for (int i = 1; i <= n; i++)
{
if (frm[i].ack == 'n')
printf("\nThe packet number %d is not received\n", r);
}
printf("\n resending from packet %d", r);
for (int i = r; i <= n; i++)
{
sleep(2);
frm[i].ack = 'y';
printf("\nReceived data of packet %d is %d", i, frm[i].data);
}
printf("\n all packets sent successfully\n");
return 0;
}

int main()
{
printf("\nNAME : SOHAM BANDYOPADHYAY");
printf("\nREGN NO. : 21BCE386");

int n;
printf("\nEnter the no. of packets to be sent:");
scanf("%d", &n);
goback(n);
return 0;
}

OUTPUT
Example 1

Example 2
CODE
#include <stdio.h>

#include <stdbool.h>

#include <stdlib.h>

#include <time.h>

#define WINDOW_SIZE 4

typedef struct {

int sequence_number;

bool ack_received;

bool is_sent;

} Packet;

int main() {

printf("\nName: Soham Bandyopadhyay");

printf("\nReg: 21BCE2386");

int NUM_PACKETS;

printf("Enter the number of packets: ");

scanf("%d", &NUM_PACKETS);

Packet packets[NUM_PACKETS];

int window_start = 0;

int window_end = WINDOW_SIZE - 1;

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

packets[i].sequence_number = i;
packets[i].ack_received = false;

packets[i].is_sent = false;

srand(time(NULL));

while (window_end < NUM_PACKETS) {

for (int i = window_start; i <= window_end; i++) {

if (!packets[i].is_sent) {

printf("Sending packet %d\n", packets[i].sequence_number);

packets[i].is_sent = true;

for (int i = window_start; i <= window_end; i++) {

if (!packets[i].ack_received) {

if (rand() % 10 < 3) {

printf("Packet %d lost\n", packets[i].sequence_number);

continue;

printf("Received acknowledgement for packet %d\n", packets[i].sequence_number);

packets[i].ack_received = true;

if (packets[window_start].ack_received) {

window_start++;

window_end++;

printf("\nAll packets sent and acknowledged successfully.\n");

return 0;

}
OUTPUT
NAME: SOHAM BANDYOPDHYAY
REGN: 21BCE2386

CODE
#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int isValidIPv4(const char *ip) {

int num, dots = 0;

int i;

char *copy, *token;

if (ip == NULL || strlen(ip) > 15)

return 0;

copy = strdup(ip);

token = strtok(copy, ".");

if (token == NULL)

return 0;
while (token) {

if (strlen(token) > 3)

return 0;

for (i = 0; i < strlen(token); i++) {

if (token[i] < '0' || token[i] > '9')

return 0;

num = atoi(token);

if (num < 0 || num > 255)

return 0;

token = strtok(NULL, ".");

dots++;

free(copy);

return (dots == 4);

int isValidIPv6(const char *ip) {

int i, colons = 0;

int num, digits = 0;

if (ip == NULL || strlen(ip) > 39)

return 0;

for (i = 0; i < strlen(ip); i++) {


if ((ip[i] >= '0' && ip[i] <= '9') || (ip[i] >= 'a' && ip[i] <= 'f') || (ip[i] >= 'A' && ip[i] <= 'F') || ip[i]
== ':') {

if (ip[i] == ':') {

colons++;

digits = 0;

if (colons > 7)

return 0;

if (i > 0 && ip[i - 1] == ':') {

if (colons == 2)

return 0;

} else {

digits++;

if (digits > 4)

return 0;

} else {

return 0;

return (colons == 7 && digits > 0);

void printIPAddress(const char *ip) {

if (isValidIPv4(ip)) {

printf("Valid IPv4 address\n");


} else if (isValidIPv6(ip)) {

printf("Valid IPv6 address\n");

} else {

printf("Invalid IP address\n");

int main() {

char ipAddress[100];

printf("\nName : Soham Bandyopadhyay");

printf("\nRegn No. : 21BCE2386");

printf("\nEnter IP Address");

scanf("%s", ipAddress);

printIPAddress(ipAddress);

return 0;

SCREENSHOT
IPV4

IPV6
Invalid

You might also like