Networking Lab
Networking Lab
Experiment no :1 - tcp
server
#include<unistd.h>
int main()
char buf[100];
int k;
int sock_desc,temp_sock_desc;
socklen_t len;
sock_desc=socket(AF_INET,SOCK_STREAM,0);
if(sock_desc==-1){
printf("error in socketcreation");
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=3003;
client.sin_family=AF_INET;
client.sin_addr.s_addr=INADDR_ANY;
client.sin_port=3003;
k=bind(sock_desc,(struct sockaddr*)&server,sizeof(server));
if(k==-1){
printf("error in binding");}
k=listen(sock_desc,5);
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)
k=recv(temp_sock_desc,buf,100,0);
if(k==-1){
printf("error in recieving");
close(temp_sock_desc);
return 0;
Client
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<unistd.h>
int main()
int k;
char buf[100];
int sock_desc;
struct sockaddr_in client;
sock_desc=socket(AF_INET,SOCK_STREAM,0);
if(sock_desc==-1)
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");
fgets(buf,100,stdin);
k=send(sock_desc,buf,100,0);
if(k==-1)
printf("error in sending");
close(sock_desc);
return 0;
Output :
Experiment no:2
UDP
Server
#include <stdio.h>
#include <strings.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include<netinet/in.h>
int main()
char buffer[100];
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(PORT);
servaddr.sin_family = AF_INET;
len = sizeof(cliaddr);
puts(buffer);
}
Client
#include <stdio.h>
#include <strings.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
#include<stdlib.h>
int main()
char buffer[100];
int sockfd, n;
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
servaddr.sin_port = htons(PORT);
servaddr.sin_family = AF_INET;
exit(0);
puts(buffer);
close(sockfd);
Output:
Experiment no:3
Server
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define n 4
int seqNo = 0;
char ack[6];
int i=0;
int count = 1;
while(1){
int noExit=0;
bzero(frame,100);
recv(client_socket,frame,sizeof(frame),0);
bzero(ack,6);
ack[0] = 'A';
ack[1] = 'C';
ack[2] = 'K';
ack[3] = seqNo;
ack[4] = '\0';
printf("\n");
seqNo = seqNo==0?1:0;
else{
ack[0] = 'N';
ack[1] = 'A';
ack[2] = 'C';
ack[3] = 'K';
ack[4] = seqNo;
ack[5] = '\0';
sleep(1);
send(client_socket,ack,sizeof(ack),0);
for(int j=1;j<5;j++){
if(frame[j]!=exit[j-1]) {
noExit = 1;
break;
}}
if(noExit==0){
return;
}count++;
}}
int main(){
int server_socket;
server_socket = socket(PF_INET,SOCK_STREAM,0);
if(server_socket<0){
exit(1);}
else{
bzero(&sa,sizeof(sa));
sa.sin_family = PF_INET;
sa.sin_port = htons(PORT);
sa.sin_addr.s_addr = inet_addr("127.0.0.7");
if( bind(server_socket,(struct sockaddr*)&sa, sizeof(sa))== 0){
else{
exit(1);
if (listen(server_socket,10)==0){
printf("Server listening...\n");
else{
if(client_socket<0){
exit(1);
else{
stop_and_wait(client_socket);
close(server_socket);
}
Client
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
char frame[100];
int seqNo = 0;
char ack[6];
int i=0;
int next = 1;
while(1){
int noExit = 0;
if(next==1){
bzero(frame,100);
i=1;
while((frame[i++]=getchar())!='\n');
frame[i-1]='\0';
frame[0] = seqNo;
sleep(1.5);
send(client_socket,frame,sizeof(frame),0);
bzero(ack,6);
if(ack[0]=='A')
printf("]\n");
seqNo = seqNo==0?1:0;
next = 1;
else{
next = 0;
printf("]\n");
for(int j=1;j<5;j++){
if(frame[j]!=exit[j-1]) {
noExit = 1;
break;
}}
if(noExit==0){
return;
}}
int main(){
int client_socket;
client_socket = socket(PF_INET,SOCK_STREAM,0);
if(client_socket<0){
exit(1);
else{
bzero(&sa,sizeof(sa));
sa.sin_family = PF_INET;
sa.sin_port = htons(PORT);
sa.sin_addr.s_addr = inet_addr("127.0.0.7");
if(connect(client_socket,(struct sockaddr*)&sa,sizeof(sa))==0){
printf("Connected to server\n");
else{
printf("Connection failure\n");
stop_and_wait(client_socket);
close(client_socket);
return 0;
Output
2.Go Back N
Server
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<netdb.h>
#include<unistd.h>
struct frame
int packet[40];
};
struct ack
int acknowledge[40];
};
int main()
{
int serversocket;
socklen_t len;
int windowsize,totalpackets,totalframes,i=0,j=0,framesend=0,k,l,buffer;
char req[50];
serversocket=socket(AF_INET,SOCK_DGRAM,0);
bzero((char*)&serveraddr,sizeof(serveraddr));
serversocket=socket(AF_INET,SOCK_DGRAM,0);
bzero((char*)&serveraddr,sizeof(serveraddr));
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(5018);
serveraddr.sin_addr.s_addr=INADDR_ANY;
bind(serversocket,(struct sockaddr*)&serveraddr,sizeof(serveraddr));
bzero((char*)&clientaddr,sizeof(clientaddr));
len=sizeof(clientaddr);
//connection establishment.
recvfrom(serversocket,req,sizeof(req),0,
(struct sockaddr*)&clientaddr,&len);
(struct sockaddr*)&clientaddr,sizeof(clientaddr));
//obtaining windowsize.
printf("Waiting for the window size\n");
recvfrom(serversocket,(char*)&windowsize,sizeof(windowsize),0,
(struct sockaddr*)&clientaddr,&len);
sendto(serversocket,(char*)&totalpackets,sizeof(totalpackets),0,
(struct sockaddr*)&clientaddr,sizeof(clientaddr));
recvfrom(serversocket,req,sizeof(req),0,
(struct sockaddr*)&clientaddr,&len);
sendto(serversocket,(char*)&totalframes,sizeof(totalframes),0,
(struct sockaddr*)&clientaddr,sizeof(clientaddr));
recvfrom(serversocket,req,sizeof(req),0,
(struct sockaddr*)&clientaddr,&len);
printf("len=%d",len);
fgets(req,2,stdin);
while(i<totalpackets)
bzero((char*)&f1,sizeof(f1));
j=0;
printf("%d",i);
f1.packet[j]=i;
j++;
i++;
sendto(serversocket,(char*)&f1,sizeof(f1),0,
(struct sockaddr*)&clientaddr,sizeof(clientaddr));
recvfrom(serversocket,(char*)&acknowledgement,sizeof(acknowledgement),0,
(struct sockaddr*)&clientaddr,&len);
j=0;
k=0;
l=buffer;
if(acknowledgement.acknowledge[j]==-1)
i=f1.packet[j];
k=l;
break;
j++;
l++;
if(k==0)
framesend++;
fgets(req,2,stdin);
printf("\nAll frames sends successfully\n Closing connection with the client \n");
close(serversocket);
Client
#include <stdio.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <string.h>
#include <unistd.h>
struct frame
{
int packet[40];
};
struct ack
int acknowledge[40];
};
int main()
int clientsocket;
socklen_t len;
int windowsize,totalpackets,totalframes,i=0,j=0,framesreceived=0,k,l,buffer;
char req[50];
clientsocket=socket(AF_INET,SOCK_DGRAM,0);
bzero((char*)&serveraddr,sizeof(serveraddr));
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(5018);
serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1");
//server=gethostbyname("127.0.0.1");
//bcopy((char*)server->h_addr,(char*)&serveraddr.sin_addr.s_addr,
//sizeof(server->h_addr));
(struct sockaddr*)&serveraddr,sizeof(serveraddr));
recvfrom(clientsocket,req,sizeof(req),0,
(struct sockaddr*)&serveraddr,&len);
scanf("%d",&windowsize);
sendto(clientsocket,(char*)&windowsize,sizeof(windowsize),0,
(struct sockaddr*)&serveraddr,sizeof(serveraddr));
recvfrom(clientsocket,(char*)&totalpackets,sizeof(totalpackets),0,
(struct sockaddr*)&serveraddr,&len);
sendto(clientsocket,"RECEIVED",sizeof("RECEIVED"),0,
(struct sockaddr*)&serveraddr,sizeof(serveraddr));
recvfrom(clientsocket,(char*)&totalframes,sizeof(totalframes),0,
(struct sockaddr*)&serveraddr,&len);
printf("len=%d",len);
sendto(clientsocket,"RECEIVED",sizeof("RECEIVED"),0,
(struct sockaddr*)&serveraddr,sizeof(serveraddr));
j=0;
buffer=i;
printf("%d",i);
i++;
j++;
recvfrom(clientsocket,(char*)&f1,sizeof(f1),0,
(struct sockaddr*)&serveraddr,&len);
printf("\n received frame %d\n\n enter -1 to send negative acknowledgement for the
following packets \n",framesreceived);
j=0;
l=buffer;
k=0;
printf("\npacket:%d\n",f1.packet[j]);
if(k==0)
{
scanf("%d",&acknowledgement.acknowledge[j]);
if(acknowledgement.acknowledge[j]==-1)
i=f1.packet[j];
k=1;
}}
j++;
l++;
framesreceived++;
sendto(clientsocket,(char*)&acknowledgement,sizeof(acknowledgement),0,
(struct sockaddr*)&serveraddr,sizeof(serveraddr));
close(clientsocket);
Output:
Experiment NO: 4
Server
#include<stdio.h>
#include<sys/types.h>
#include <string.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <unistd.h>
FILE *fp;
char buffer[max];
char *filename="recv1.txt";
fp=fopen(filename,"w");
while(1){
if(recv(sockfd,buffer,sizeof(buffer),0)<=0) {
break;
return;
else {
fprintf(fp,"%s",buffer);
bzero(buffer,max);
}}
return;
}
int main() {
char *ip="127.0.0.1";
int port=8080;
int e,d;
socklen_t addr_size;
int sockfd,newsock;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0){
exit(1);
else {
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=port;
serveraddr.sin_addr.s_addr=inet_addr(ip);
e=bind(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr));
if(e<0){
printf("Binding Unsecussefull\n");
exit(1);
else {
printf("Binding Successfull\n");
else{
perror("[-]Error in listening");
exit(1);
} addr_size=sizeof(cliaddr);
newsock=accept(sockfd,(struct sockaddr*)&cliaddr,&addr_size);
printf("newsock=%d",newsock);
write1(newsock);
return 0;
Client
#include<stdio.h>
#include<stdlib.h>
#include <sys/types.h>
#include <string.h>
#include <strings.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>
while(fgets(data,max,fp)!=NULL){
if(send(sockfd,data,sizeof(data),0)==-1){
printf("Error in sending");
bzero(data,max);
}}
int main() {
FILE *fp;
char *ip="127.0.0.1";
int port=8080;
int e;
int sockfd;
char *filename="send1.txt";
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd==-1){
exit(1);
else {
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=port;
serveraddr.sin_addr.s_addr=inet_addr(ip);
e=connect(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr));
if(e<0) {
printf("connection failure");
exit(1);
else {
fp=fopen(filename,"r");
if (fp == NULL) {
exit(1);
send1(sockfd,fp);
close(sockfd);
return 0;
Output:
Experiment no:5
#include<stdio.h>
#include<string.h>
struct node {
unsigned dist[20];
unsigned from[20];
}rt[10];
int main() {
int n,i,j,k,count;
int cost[20][20];
scanf("%d",&n);
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
scanf("%d",&cost[i][j]);
cost[i][i]=0;
rt[i].dist[j]=cost[i][j];
rt[i].from[j]=j;
do {
count=0;
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
for(k=0;k<n;k++) {
if(rt[i].dist[j]>cost[i][k]+rt[k].dist[j]){
rt[i].dist[j]=rt[i].dist[k]+rt[k].dist[j];
rt[i].from[j]=k;
count++;
}while(count!=0);
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
printf("\n\n");
Output:
Experiment No:6
Leaky Bucket
#include<stdio.h>
int main(){
while (n != 0) {
scanf("%d", &incoming);
store += incoming;
} else {
store = buck_size;
n--;
Output: