CN
CN
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int k;
socklen_t len;
int sock_desc,temp_sock_desc;
struct sockaddr_in server,client;
sock_desc = socket(AF_INET,SOCK_STREAM,0);
if(sock_desc==-1)
printf("Error in socket creation");
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = 3003;
k = bind(sock_desc,(struct
sockaddr*)&server,sizeof(server));
if(k==-1)
printf("Error in binding");
k = listen(sock_desc,1);
if(k ==-1)
printf("Error in listening");
len = sizeof(client);
temp_sock_desc = accept(sock_desc,(struct
sockaddr*)&client,&len);
if(temp_sock_desc==-1)
printf("Error in temporary socket
creation");
k=recv(temp_sock_desc,buf,100,0);
printf("Message got from client is :%s",buf);
close(temp_sock_desc);
return 0;
}
//TCP CLIENT
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int k;
int sock_desc;
struct sockaddr_in client;
sock_desc = socket(AF_INET,SOCK_STREAM,0);
if(sock_desc == -1)
printf("Error in socket creation");
client.sin_family = AF_INET;
client.sin_addr.s_addr = INADDR_ANY;
client.sin_port = 3003;
k = connect(sock_desc,(struct
sockaddr*)&client,sizeof(client));
if(k == -1)
printf("Error in connecting to server");
k = recv(sock_desc,buf,100,0);
printf("Message got from server is :%s",buf);
close(sock_desc);
return 0;
}
=====OUTPUT===========
Enter data to be sendhi
Message got from server is :helloo
//VC_SERVER TCP
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int k,cnt[2];
socklen_t len;
int sock_desc,temp_sock_desc;
struct sockaddr_in server,client;
sock_desc=socket(AF_INET,SOCK_STREAM,0);
if(sock_desc==-1)
printf("Error in socket creation");
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=3003;
k=bind(sock_desc,(struct
sockaddr*)&server,sizeof(server));
if(k==-1)
printf("Error in binding");
k=listen(sock_desc,1);
if(k==-1)
printf("Error in listening");
len=sizeof(client);
temp_sock_desc=accept(sock_desc,(struct
sockaddr*)&client,&len);
if(temp_sock_desc==-1)
printf("Error in temporary socket
creation");
printf("Enter a word: ");
fgets(buf,100,stdin);
k=send(temp_sock_desc,buf,100,0);
k = recv(temp_sock_desc, cnt, sizeof(cnt), 0);
printf("No. of vowels : %d\n",cnt[0]);
printf("No. of consonants : %d\n",cnt[1]);
close(temp_sock_desc);
return 0;
}
//VC_CLIENT TCP
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int k,l,i,cnt[2]={0,0};
int sock_desc;
struct sockaddr_in client;
sock_desc=socket(AF_INET,SOCK_STREAM,0);
if (sock_desc==-1)
printf("Error in socket creation\n");
client.sin_family=AF_INET;
client.sin_addr.s_addr=INADDR_ANY;
client.sin_port=3003;
k=connect(sock_desc,(struct
sockaddr*)&client,sizeof(client));
if(k==-1)
printf("Error in connecting to server\n");
k = recv(sock_desc, buf, sizeof(buf) - 1, 0);
buf[k] = '\0';
printf("Word received from server : %s\n",buf);
l=strlen(buf);
for (i=0;i<l;i++)
{
if ((buf[i] >= 'A' && buf[i] <= 'Z') ||
(buf[i] >= 'a' && buf[i] <= 'z'))
{
if(buf[i]== 'a'|| buf[i]== 'e'||
buf[i]== 'i'|| buf[i]== 'o'|| buf[i]== 'u'|| buf[i]==
'A'|| buf[i]== 'E'|| buf[i]== 'I'|| buf[i]== 'O'||
buf[i]== 'U')
cnt[0]++;
else
cnt[1]++;
}
}
printf("No. of vowels : %d\n", cnt[0]);
printf("No. of consonants : %d\n", cnt[1]);
k=send(sock_desc,cnt,sizeof(cnt),0);
close(sock_desc);
return 0;
}
=====OUTPUT===========
Enter a word: Marian
No. of vowels : 3
No. of consonants : 3
No. of vowels : 3
No. of consonants : 3
//UDP_CLIENT
//UDP_CLIENT
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int k;
int sock_desc;
struct sockaddr_in server,client;
sock_desc=socket(AF_INET,SOCK_DGRAM,0);
if(sock_desc==-1)
printf("Error in socket creation\n");
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=100;
printf("\nEnter data to be send: ");
fgets(buf,100,stdin);
k=sendto(sock_desc,buf,100,0,(struct
sockaddr*)&server,sizeof(server));
char rebuf[100];
struct sockaddr_in from;
socklen_t len = sizeof(server);
k = recvfrom(sock_desc, rebuf, sizeof(rebuf), 0,
(struct sockaddr*)&server, &len);
printf("Message received from server: %s\n",
rebuf);
close(sock_desc);
return 0;
}
//UDP_SERVER
//UDP_SERVER
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
int sock_desc;
struct sockaddr_in server,client;
sock_desc=socket(AF_INET,SOCK_DGRAM,0);
if(sock_desc==-1)
printf("Error in socketcreation\n");
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=100;
k=bind(sock_desc,(struct
sockaddr*)&server,sizeof(server));
if(k==-1)
printf("Error in binding\n");
len = sizeof(client);
k=recvfrom(sock_desc,buf,100,0,(struct
sockaddr*)&client,&len);
printf("\nMessage got from client is:%s",buf);
char sendbuf[100];
printf("Enter data to be send: ");
fgets(sendbuf,100,stdin);
k=sendto(sock_desc,sendbuf,100,0,(struct
sockaddr*)&client,sizeof(client));
close(sock_desc);
return 0;
}
=====OUTPUT===========
Enter data to be send: hi
Message received from server: hello
//TIME S UDP
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <time.h>
#define MAX_CLIENTS 10
struct client_info {
char ip[20];
int port;
};
struct client_info clients[MAX_CLIENTS];
int client_count = 0;
int main()
{
int sockfd;
char buffer[50];
struct sockaddr_in servaddr, cliaddr;
socklen_t len;
pid_t pid;
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = INADDR_ANY;
servaddr.sin_port = 1234;
bind(sockfd, (struct sockaddr *)&servaddr,
sizeof(servaddr));
do
{
len = sizeof(cliaddr);
pid = fork();
if (pid == 0)
{
time_t rawtime;
struct tm *timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);
} while(strcmp(buffer,"stop")!=0);
close(sockfd);
return 0;
}
// TIME C1 UDP
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main()
{
int sockfd;
char buffer[50];
struct sockaddr_in addr;
socklen_t s;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = 1234;
s = sizeof(addr);
do
{
printf("Enter message for server: ");
scanf("%s", buffer);
if (strcmp(buffer, "stop") == 0)
break;
close(sockfd);
return 0;
}
// TIME C2 UDP
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main()
{
int sockfd;
char buffer[50];
struct sockaddr_in addr;
socklen_t s;
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = 1234;
s = sizeof(addr);
do
{
printf("Enter message for server: ");
scanf("%s", buffer);
if (strcmp(buffer, "stop") == 0)
break;
close(sockfd);
return 0;
}
=====OUTPUT===========
UDP Concurrent Time Server started
Message from Client 1 : time
Time sent to Client 1
Message from Client 1 : time
Time sent to Client 1
Message from Client 2 : time
Time sent to Client 2
Message from Client 2 : time
Time sent to Client 2
Message from Client 1 : time
Time sent to Client 1
Message from Client 1 : time
Time sent to Client 1
Message from Client 2 : time
Time sent to Client 2
Enter message for server: time
Received from server: Time is 15:02:26
Enter message for server: time
Received from server: Time is 15:02:34
Enter message for server: time
Received from server: Time is 15:31:34
Enter message for server: time
Received from server: Time is 15:02:00
Enter message for server: time
Received from server: Time is 15:02:06
Enter message for server: time
Received from server: Time is 15:02:38
Enter message for server: time
Received from server: Time is 15:31:29
//PALINDROME_SERVER TCP
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int k,result;
socklen_t len;
int sock_desc,temp_sock_desc;
struct sockaddr_in server,client;
sock_desc = socket(AF_INET,SOCK_STREAM,0);
if(sock_desc==-1)
printf("Error in socket creation");
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = 3003;
k = bind(sock_desc,(struct
sockaddr*)&server,sizeof(server));
if(k==-1)
printf("Error in binding");
k = listen(sock_desc,1);
if(k==-1)
printf("Error in listening");
len = sizeof(client);
temp_sock_desc = accept(sock_desc,(struct
sockaddr*)&client,&len);
if(temp_sock_desc==-1)
printf("Error in temporary socket creation");
k = send(temp_sock_desc,buf,100,0);
k = recv(temp_sock_desc,&result,sizeof(result),0);
if(result==1)
printf("The word is a palindrome\n");
else
printf("The word is not a palindrome\n");
close(temp_sock_desc);
return 0;
}
//PALINDROME_CLIENT TCP
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int k,l,i,flag=1;
int sock_desc;
struct sockaddr_in client;
sock_desc = socket(AF_INET,SOCK_STREAM,0);
if(sock_desc==-1)
printf("Error in socket creation");
client.sin_family = AF_INET;
client.sin_addr.s_addr = INADDR_ANY;
client.sin_port = 3003;
k = connect(sock_desc,(struct
sockaddr*)&client,sizeof(client));
if(k==-1)
printf("Error in connecting to server");
k = recv(sock_desc,buf,sizeof(buf)-1,0);
buf[k]='\0';
l = strlen(buf)-1;
for(i=0;i<l/2;i++)
{
if(buf[i]!=buf[l-i-1])
{
flag=0;
break;
}
}
if(flag==1)
printf("Palindrome\n");
else
printf("Not Palindrome\n");
k = send(sock_desc,&flag,sizeof(flag),0);
close(sock_desc);
return 0;
}
//STRING_REVERSE_SERVER TCP
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int k;
socklen_t len;
int sock_desc,temp_sock_desc;
struct sockaddr_in server,client;
sock_desc = socket(AF_INET,SOCK_STREAM,0);
if(sock_desc==-1)
printf("Error in socket creation");
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = 3003;
k = bind(sock_desc,(struct
sockaddr*)&server,sizeof(server));
if(k==-1)
printf("Error in binding");
k = listen(sock_desc,1);
if(k==-1)
printf("Error in listening");
len = sizeof(client);
temp_sock_desc = accept(sock_desc,(struct
sockaddr*)&client,&len);
if(temp_sock_desc==-1)
printf("Error in temporary socket creation");
k = send(temp_sock_desc,buf,100,0);
k = recv(temp_sock_desc,buf,100,0);
close(temp_sock_desc);
return 0;
}
//STRING_REVERSE_CLIENT TCP
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100],rev[100];
int k,l,i;
int sock_desc;
struct sockaddr_in client;
sock_desc = socket(AF_INET,SOCK_STREAM,0);
if(sock_desc==-1)
printf("Error in socket creation");
client.sin_family = AF_INET;
client.sin_addr.s_addr = INADDR_ANY;
client.sin_port = 3003;
k = connect(sock_desc,(struct
sockaddr*)&client,sizeof(client));
if(k==-1)
printf("Error in connecting to server");
k = recv(sock_desc,buf,sizeof(buf)-1,0);
buf[k]='\0';
l = strlen(buf);
for(i=0;i<l;i++)
rev[i] = buf[l-i-1];
rev[l] = '\0';
k = send(sock_desc,rev,100,0);
close(sock_desc);
return 0;
}
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
int sock_desc,temp_sock_desc;
int num,fact=1,i,k;
socklen_t len;
sock_desc = socket(AF_INET,SOCK_STREAM,0);
if(sock_desc==-1)
printf("Error in socket creation");
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = 3003;
k = bind(sock_desc,(struct
sockaddr*)&server,sizeof(server));
if(k==-1)
printf("Error in binding");
listen(sock_desc,1);
len = sizeof(client);
temp_sock_desc = accept(sock_desc,(struct
sockaddr*)&client,&len);
recv(temp_sock_desc,&num,sizeof(num),0);
for(i=1;i<=num;i++)
fact = fact * i;
send(temp_sock_desc,&fact,sizeof(fact),0);
close(temp_sock_desc);
close(sock_desc);
return 0;
}
int main()
{
int sock_desc;
int num,fact,k;
sock_desc = socket(AF_INET,SOCK_STREAM,0);
if(sock_desc==-1)
printf("Error in socket creation");
client.sin_family = AF_INET;
client.sin_addr.s_addr = INADDR_ANY;
client.sin_port = 3003;
k = connect(sock_desc,(struct
sockaddr*)&client,sizeof(client));
if(k==-1)
printf("Error in connecting");
send(sock_desc,&num,sizeof(num),0);
recv(sock_desc,&fact,sizeof(fact),0);
printf("Factorial is : %d\n",fact);
close(sock_desc);
return 0;
}
Enter a number : 5
Factorial is : 120
UDP VC
////UDP_VC_SERVER
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int cnt[2];
int k,i,l;
socklen_t len;
int sock_desc;
struct sockaddr_in server,client;
sock_desc=socket(AF_INET,SOCK_DGRAM,0);
if(sock_desc==-1)
printf("Error in socket creation\n");
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=100;
k=bind(sock_desc,(struct
sockaddr*)&server,sizeof(server));
if(k==-1)
printf("Error in binding\n");
len=sizeof(client);
k=recvfrom(sock_desc,buf,100,0,(struct
sockaddr*)&client,&len);
l=strlen(buf);
cnt[0]=0;
cnt[1]=0;
for(i=0;i<l;i++)
{
if((buf[i]>='A'&&buf[i]<='Z')||
(buf[i]>='a'&&buf[i]<='z'))
{
if(buf[i]=='a'||buf[i]=='e'||buf[i]=='i'||
buf[i]=='o'||buf[i]=='u'||
buf[i]=='A'||buf[i]=='E'||buf[i]=='I'||
buf[i]=='O'||buf[i]=='U')
cnt[0]++;
else
cnt[1]++;
}
}
sendto(sock_desc,cnt,sizeof(cnt),0,(struct
sockaddr*)&client,sizeof(client));
close(sock_desc);
}
////UDP_VC_CLIENT
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int cnt[2];
int k;
int sock_desc;
struct sockaddr_in server;
sock_desc=socket(AF_INET,SOCK_DGRAM,0);
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=100;
sendto(sock_desc,buf,100,0,(struct
sockaddr*)&server,sizeof(server));
socklen_t len=sizeof(server);
recvfrom(sock_desc,cnt,sizeof(cnt),0,(struct
sockaddr*)&server,&len);
UDP PALIND
////UDP_PAL_SERVER
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int flag=1;
int i,l,k;
socklen_t len;
int sock_desc;
struct sockaddr_in server,client;
sock_desc=socket(AF_INET,SOCK_DGRAM,0);
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=100;
bind(sock_desc,(struct
sockaddr*)&server,sizeof(server));
len=sizeof(client);
recvfrom(sock_desc,buf,100,0,(struct
sockaddr*)&client,&len);
l=strlen(buf)-1;
for(i=0;i<l/2;i++)
{
if(buf[i]!=buf[l-i-1])
{
flag=0;
break;
}
}
sendto(sock_desc,&flag,sizeof(flag),0,(struct
sockaddr*)&client,sizeof(client));
close(sock_desc);
}
////UDP_PAL_CLIENT
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int flag;
int sock_desc;
sock_desc=socket(AF_INET,SOCK_DGRAM,0);
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=100;
sendto(sock_desc,buf,100,0,(struct
sockaddr*)&server,sizeof(server));
socklen_t len=sizeof(server);
recvfrom(sock_desc,&flag,sizeof(flag),0,(struct
sockaddr*)&server,&len);
if(flag==1)
printf("Palindrome\n");
else
printf("Not Palindrome\n");
close(sock_desc);
}
UDP REVERSE
//UDP_REV_SERVER
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100],rev[100];
int i,l;
socklen_t len;
int sock_desc;
struct sockaddr_in server,client;
sock_desc=socket(AF_INET,SOCK_DGRAM,0);
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=100;
bind(sock_desc,(struct
sockaddr*)&server,sizeof(server));
len=sizeof(client);
recvfrom(sock_desc,buf,100,0,(struct
sockaddr*)&client,&len);
l=strlen(buf);
for(i=0;i<l;i++)
rev[i]=buf[l-i-1];
rev[l]='\0';
sendto(sock_desc,rev,100,0,(struct
sockaddr*)&client,sizeof(client));
close(sock_desc);
}
////UDP_REV_CLIENT
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
char buf[100];
int sock_desc;
sock_desc=socket(AF_INET,SOCK_DGRAM,0);
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=100;
sendto(sock_desc,buf,100,0,(struct
sockaddr*)&server,sizeof(server));
socklen_t len=sizeof(server);
recvfrom(sock_desc,buf,100,0,(struct
sockaddr*)&server,&len);
printf("Reversed string: %s\n",buf);
close(sock_desc);
}
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
int sock_desc;
int num,fact=1,i;
socklen_t len;
sock_desc = socket(AF_INET,SOCK_DGRAM,0);
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = 100;
bind(sock_desc,(struct
sockaddr*)&server,sizeof(server));
len = sizeof(client);
recvfrom(sock_desc,&num,sizeof(num),0,
(struct sockaddr*)&client,&len);
for(i=1;i<=num;i++)
fact = fact * i;
sendto(sock_desc,&fact,sizeof(fact),0,
(struct sockaddr*)&client,sizeof(client));
close(sock_desc);
return 0;
}
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
int main()
{
int sock_desc;
int num,fact;
socklen_t len;
sock_desc = socket(AF_INET,SOCK_DGRAM,0);
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = 100;
sendto(sock_desc,&num,sizeof(num),0,
(struct sockaddr*)&server,sizeof(server));
len = sizeof(server);
recvfrom(sock_desc,&fact,sizeof(fact),0,
(struct sockaddr*)&server,&len);
printf("Factorial is : %d\n",fact);
close(sock_desc);
return 0;
}
Enter a number : 6
Factorial is : 720
#include <stdio.h>
int main() {
int bucketSize,outputRate,numberOfPackets;
int currentBucket = 0;
int packetSize;
if (currentBucket > 0)
{
int bytesToSend;
printf("Transmitting %d bytes...\n",
bytesToSend);
printf("Bytes remaining in bucket: %d\n",
currentBucket);
}
}
return 0;
}
=====OUTPUT===========
Enter bucket size: 150
Enter output rate: 100
Enter number of packets: 3
// server_ftp.c
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
int main() {
char buf[1024]; // Increased buffer for file
content
char filename[100];
int sock_desc, temp_sock_desc;
struct sockaddr_in server, client;
socklen_t len;
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(3003); // Use htons for
proper byte order
close(temp_sock_desc);
close(sock_desc);
return 0;
}
// client_ftp.c
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main() {
char buf[1024];
char filename[100];
int sock_desc;
struct sockaddr_in client;
client.sin_family = AF_INET;
client.sin_addr.s_addr = INADDR_ANY;
client.sin_port = htons(3003);
close(sock_desc);
return 0;
}
output
----------------------
server
Server waiting for file request...
Client requested file: LINK.c
client
Enter filename to download: LINK.c
File received successfully and saved as
'received_file.txt'
// SLIDING WINDOW PROTOCOL
//sliding window
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>
#include <unistd.h>
void stopAndWait(int totalFrames);
void goBackN(int totalFrames, int windowSize);
void selectiveRepeat(int totalFrames, int windowSize);
int main() {
int choice, totalFrames = 5, windowSize = 3;
printf("--- Network Flow Control Simulation ---\n");
printf("1. Stop and Wait ARQ\n");
printf("2. Go-Back-N ARQ\n");
printf("3. Selective Repeat ARQ\n");
printf("Enter choice: ");
scanf("%d", &choice);
switch(choice) {
case 1: stopAndWait(totalFrames); break;
case 2: goBackN(totalFrames, windowSize); break;
case 3: selectiveRepeat(totalFrames, windowSize);
break;
default: printf("Invalid choice!\n");
}
return 0;
}
// --- 1. STOP AND WAIT ---
void stopAndWait(int totalFrames)
{
int i = 1;
while (i <= totalFrames)
{
printf("\n[Sender]: Sending Frame %d...", i);
// Simulate random loss (20% chance)
if (rand() % 5 == 0)
{
printf("\n[Error]: Frame %d lost! Retransmitting...",
i);
continue;
}
printf("\n[Receiver]: Frame %d received. Sending ACK
%d...", i, i + 1);
i++;
}
printf("\n\nAll frames sent successfully.\n");
}
// --- 2. GO-BACK-N ---
void goBackN(int totalFrames, int windowSize)
{
int sent = 0, acked = 0;
while (acked < totalFrames)
{
// Send frames within the window
for (int i = sent; i < acked + windowSize && i <
totalFrames; i++)
{
printf("\n[Sender]: Sending Frame %d", i);
sent++;
}
// Simulate acknowledgment for the first frame in the
window
int randomBit = rand() % 4;
if (randomBit == 0) { // Simulate loss
printf("\n[Error]: Frame %d lost! Window resets.",
acked);
sent = acked; // Go Back to the last unacked frame
} else
{
printf("\n[Receiver]: Received Frame %d. Sending
ACK.", acked);
acked++;
}
}
printf("\n\nAll frames sent successfully.\n");
}
// --- 3. SELECTIVE REPEAT ---
void selectiveRepeat(int totalFrames, int windowSize)
{
bool ackStatus[10] = {false};
int ackedCount = 0;
while (ackedCount < totalFrames)
{
for (int i = 0; i < totalFrames; i++)
{
if (!ackStatus[i])
{
printf("\n[Sender]: Sending Frame %d", i);
if (rand() % 3 != 0) { // 66% success rate
printf(" -> [Receiver]: Frame %d received & ACKed",
i);
ackStatus[i] = true;
ackedCount++;
} else {
printf(" -> [Error]: Frame %d dropped!", i);
}
}
}
printf("\n--- End of Current Window Pass ---\n");
}
output
---------------------------
-- Network Flow Control Simulation ---
1. Stop and Wait ARQ
2. Go-Back-N ARQ
3. Selective Repeat ARQ
Enter choice: 1
#include <stdio.h>
#include <limits.h>
#define N 10
// Initialize distances
for(int i = 0; i < n; i++)
d[i] = INT_MAX;
d[src] = 0;
vis[u] = 1;
int main()
{
int g[N][N], n, src;
printf(" ");
for(int i = 0; i < n; i++)
printf("%4d", i);
printf("\n");
printf("\n");
}
return 0;
}
Adjacency Matrix:
0 1 2 3 4
0 0 10 0 30 100
1 10 0 50 0 0
2 0 50 0 20 10
3 30 0 20 0 60
4 100 0 10 60 0
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main()
{
char buf[1024];
char filename[100];
socklen_t len;
// Create Socket
sock_desc = socket(AF_INET, SOCK_STREAM, 0);
// Server Details
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(3003);
// Bind
bind(sock_desc,
(struct sockaddr*)&server,
sizeof(server));
// Listen
listen(sock_desc, 5);
while(1)
{
len = sizeof(client);
// Accept Client Connection
temp_sock_desc = accept(sock_desc,(struct
sockaddr*)&client, &len);
if(temp_sock_desc < 0)
{
printf("Connection failed\n");
continue;
}
pid = fork();
// Child Process
if(pid == 0)
{
close(sock_desc);
// Receive filename
recv(temp_sock_desc,
filename,
sizeof(filename),
0);
filename[strcspn(filename, "\n")] = 0;
FILE *fp;
fp = fopen(filename, "r");
if(fp == NULL)
{
send(temp_sock_desc, "File not found",
15,0);
}
else
{
int bytes_read;
bytes_read = fread(buf, 1,
sizeof(buf), fp);
send(temp_sock_desc,buf,bytes_read,
0);
fclose(fp);
close(temp_sock_desc);
exit(0);
}
// Parent Process
close(temp_sock_desc);
}
close(sock_desc);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
int main()
{
char buf[1024];
char filename[100];
int sock_desc;
// Create Socket
sock_desc = socket(AF_INET, SOCK_STREAM, 0);
// Client Details
client.sin_family = AF_INET;
client.sin_addr.s_addr = INADDR_ANY;
client.sin_port = htons(3003);
// Connect to Server
if(connect(sock_desc, (struct sockaddr*)&client,
sizeof(client)) == -1)
{
printf("Connection failed\n");
return 1;
}
// Enter filename
printf("Enter filename to download : ");
// Send filename
send(sock_desc,filename,strlen(filename), 0);
n = recv(sock_desc,buf,sizeof(buf),0);
buf[n] = '\0';
// Check response
if(strcmp(buf, "File not found") == 0)
{
printf("Server Error : %s\n", buf);
}
else
{
FILE *fp;
fp = fopen("received_file.txt", "w");
if(fp != NULL)
{
fprintf(fp, "%s", buf);
fclose(fp);
close(sock_desc);
return 0;
}