Вы находитесь на странице: 1из 43

CS6411 CN

1.UDP ECHO

// UDP Echo Server


#include<stdio.h>
#include<sys/socket.h> //For socket(), bind()
#include<sys/types.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h> //For htonl(), htons()
#include<stdlib.h> //For atoi()
#include<unistd.h> //For read(), write(), close()

int main(int argc, char *argv[])


{
int sockfd;
struct sockaddr_in serv_addr,cli_addr;
char buffer[256];
socklen_t len;
if(argc!=2)
printf("Port not provided");
sockfd=socket(AF_INET,SOCK_DGRAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
serv_addr.sin_port=htons(atoi(argv[1]));
printf("\nSocket created successfully");
if(bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{
printf("\nError in bind, change port no provided");
exit(0);
}
printf("\nBinded successfully");
len=sizeof(cli_addr);
recvfrom(sockfd,buffer,256,0,(struct sockaddr*)&cli_addr,&len);
printf("\nClient message : %s",buffer);
sendto(sockfd,buffer,256,0,(struct sockaddr*)&cli_addr,len);
printf("\n");
close(sockfd);
return 0;
}
// UDP Echo Client
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h> //For socket()
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h> //For htonl(), htons()
#include<stdlib.h> //For atoi()
#include<unistd.h> //For read(), write(), close()

int main(int argc, char *argv[])


{
int sockfd;
struct sockaddr_in serv_addr;
char buffer[256];
socklen_t len;
if(argc!=3)
printf("Hostname or port not provided");
sockfd=socket(AF_INET,SOCK_DGRAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(atoi(argv[1]));
serv_addr.sin_port=htons(atoi(argv[2]));
printf("\nSocket created successfully");
printf("\nEnter the message to send : ");
fgets(buffer,256,stdin);
len=sizeof(serv_addr);
sendto(sockfd,buffer,256,0,(struct sockaddr*)&serv_addr,len);
recvfrom(sockfd,buffer,256,0,(struct sockaddr*)&serv_addr,&len);
printf("Server echo : %s",buffer);
printf("\n");
close(sockfd);
return 0;
}

OUTPUT :

//Server Terminal
[student@localhost network_lab]$ gcc -o ss udpechoserver.c
[student@localhost network_lab]$ ./ss 3000

Socket created successfully


Binded successfully
Client message : Hello students!

//Client Terminal
[student@localhost network_lab]$ gcc -o cc udpechoclient.c
[student@localhost network_lab]$ ./cc localhost 3000

Socket created successfully


Enter the message to send : Hello students!
Server echo : Hello students!
2.UDP CHAT

PROGRAM CODE :
// UDP Chat Server
#include<stdio.h>
#include<string.h> //For bzero()
#include<sys/socket.h> //For socket(), bind()
#include<sys/types.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h> //For htonl(), htons()
#include<stdlib.h> //For atoi()
#include<unistd.h> //For read(), write(), close()

int main(int argc, char *argv[])


{
int sockfd;
struct sockaddr_in serv_addr,cli_addr;
char buffer[256];
socklen_t len;
if(argc!=2)
printf("Port not provided");
sockfd=socket(AF_INET,SOCK_DGRAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
serv_addr.sin_port=htons(atoi(argv[1]));
printf("\nSocket created successfully");
if(bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{
printf("\nError in bind, change port no provided");
exit(0);
}
printf("\nBinded successfully");
len=sizeof(cli_addr);
while(1)
{
recvfrom(sockfd,buffer,256,0,(struct sockaddr*)&cli_addr,&len);
if(strcmp(buffer,"stop")==0)
exit(0);
printf("\nMessage from client : %s",buffer);
bzero(buffer,256);
printf("\nEnter the message for client : ");
fgets(buffer,256,stdin);
sendto(sockfd,buffer,256,0,(struct sockaddr*)&cli_addr,len);
}
printf("\n");
close(sockfd);
return 0;
}
// UDP Chat Client
#include<stdio.h>
#include<string.h> //For strcmp()
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h> //For htonl(), htons()
#include<stdlib.h> //For atoi()
#include<unistd.h> //For read(), write(), close()

int main(int argc, char *argv[])


{
int sockfd;
struct sockaddr_in serv_addr;
char buffer[256];
socklen_t len;
if(argc!=3)
printf("Hostname or port not provided");
sockfd=socket(AF_INET,SOCK_DGRAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(atoi(argv[1]));
serv_addr.sin_port=htons(atoi(argv[2]));
printf("\nSocket created successfully");
while(1)
{
if(strcmp(buffer,"stop")==0)
exit(0);
printf("\nEnter the message for server : ");
fgets(buffer,256,stdin);
len=sizeof(serv_addr);
sendto(sockfd,buffer,256,0,(struct sockaddr*)&serv_addr,len);
recvfrom(sockfd,buffer,256,0,(struct sockaddr*)&serv_addr,&len);
printf("\nMessage from server : %s",buffer);
}
printf("\n");
close(sockfd);
return 0;
}

OUTPUT :

//Server Terminal
[student@localhost network_lab]$ gcc -o ss udpchatserver.c
[student@localhost network_lab]$ ./ss 2222

Socket created successfully


Binded successfully
Message from client : hi

Enter the message for client : hello

Message from client : how are you

Enter the message for client : am gud

Message from client : stop

//Client Terminal
[student@localhost network_lab]$ gcc -o cc udpchatclient.c
[student@localhost network_lab]$ ./cc localhost 2222

Socket created successfully


Enter the message for server : hi

Message from server : hello

Enter the message for server : how are you

Message from server : am gud

Enter the message for server : stop


3.UDP FILE TRANSFER

PROGRAM CODE :
// UDP File Server
#include<stdio.h>
#include<sys/socket.h> //For socket(), bind()
#include<sys/types.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h> //For htonl(), htons()
#include<stdlib.h> //For atoi()
#include<unistd.h> //For read(), write(), close()

int main(int argc, char *argv[])


{
FILE *fptr;
int sockfd,newsockfd;
struct sockaddr_in serv_addr,cli_addr;
char buffer[256],c;
socklen_t len;
if(argc!=2)
printf("Port not provided");
sockfd=socket(AF_INET,SOCK_DGRAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
serv_addr.sin_port=htons(atoi(argv[1]));
printf("\nSocket created successfully");
if(bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{
printf("\nError in bind, change port no provided");
exit(0);
}
printf("\nBinded successfully");
len=sizeof(cli_addr);
recvfrom(sockfd,buffer,256,0,(struct sockaddr*)&cli_addr,&len);
printf("\nThe received filename is : %s",buffer);
printf("\nThe contents of the file : ");
fptr=fopen(buffer,"r");
c=fgetc(fptr);
while(c!=EOF)
{
printf("%c",c);
c=fgetc(fptr);
}
fclose(fptr);
printf("\n");
close(sockfd);
return 0;}
// UDP File Client
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h> //For htonl(), htons()
#include<stdlib.h> //For atoi()
#include<unistd.h> //For read(), write(), close()

int main(int argc, char *argv[])


{
int sockfd;
struct sockaddr_in serv_addr;
char buffer[256];
socklen_t len;
if(argc!=3)
printf("Hostname or port not provided");
sockfd=socket(AF_INET,SOCK_DGRAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(atoi(argv[1]));
serv_addr.sin_port=htons(atoi(argv[2]));
printf("\nSocket created successfully");
printf("\nEnter the filename send : ");
scanf("%s",buffer);
len=sizeof(serv_addr);
sendto(sockfd,buffer,256,0,(struct sockaddr*)&serv_addr,len);
printf("\n");
close(sockfd);
return 0;
}

OUTPUT :

//Server Terminal
[student@localhost network_lab]$ gcc -o ss udpfileserver.c
[student@localhost network_lab]$ ./ss 2345

Socket created successfully


Binded successfully
The received filename is : file.txt
The contents of the file : Hello students!

//Client Terminal
[student@localhost network_lab]$ gcc -o cc udpfileclient.c
[student@localhost network_lab]$ ./cc localhost 2345

Socket created successfully


Enter the filename send : file.txt
4.TCP ECHO

PROGRAM CODE :

// TCP Echo Server


#include<stdio.h>
#include<sys/socket.h> //For socket(), bind(), listen(), accept()
#include<sys/types.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h> //For htonl(), htons()
#include<stdlib.h> //For atoi()
#include<unistd.h> //For read(), write(), close()

int main(int argc, char *argv[])


{
int sockfd,newsockfd,cli_length;
struct sockaddr_in serv_addr,cli_addr;
char buffer[256];
if(argc!=2)
printf("Port not provided");
sockfd=socket(AF_INET,SOCK_STREAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
serv_addr.sin_port=htons(atoi(argv[1]));
printf("\nSocket created successfully");
if(bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{
printf("\nError in bind, change port no provided");
exit(0);
}
printf("\nBinded successfully");
listen(sockfd,5);
printf("\nServer listening..");
cli_length=sizeof(cli_addr);
newsockfd=accept(sockfd,(struct sockaddr*)&cli_addr,&cli_length);
printf("\nClient request accepted");
read(newsockfd,buffer,256);
printf("\nClient message : %s",buffer);
write(newsockfd,buffer,256);
printf("\n");
close(sockfd);
return 0;
}
// TCP Echo Client
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h> //For htonl(), htons()
#include<stdlib.h> //For atoi()
#include<unistd.h> //For read(), write(), close()

int main(int argc, char *argv[])


{
int sockfd;
struct sockaddr_in serv_addr;
char buffer[256];
if(argc!=3)
printf("Hostname or port not provided");
sockfd=socket(AF_INET,SOCK_STREAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(atoi(argv[1]));
serv_addr.sin_port=htons(atoi(argv[2]));
printf("\nSocket created successfully");
if(connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{
printf("\nError in connecting");
exit(0);
}
printf("\nConnection established");
printf("\nEnter the message to send : ");
fgets(buffer,256,stdin);
write(sockfd,buffer,256);
printf("Server echo : %s",buffer);
printf("\n");
close(sockfd);
return 0;
}

OUTPUT :

//Server terminal
[student@localhost network_lab]$ gcc -o ss tcpechoserver.c //Compile command
[student@localhost network_lab]$ ./ss 1234 //Run command

Socket created successfully


Binded successfully
Server listening..
Client request accepted
Client message : Hello students!
//Client terminal
[student@localhost network_lab]$ gcc -o cc tcpechoclient.c //Compile command
[student@localhost network_lab]$ ./cc localhost 1234 //Run command

Socket created successfully


Connection established
Enter the message to send : Hello students!
Server echo : Hello students!
5.TCP CHAT
PROGRAM CODE :
// TCP Chat Server
#include<stdio.h>
#include<string.h> //For bzero()
#include<sys/socket.h> //For socket(), bind(), listen(), accept()
#include<sys/types.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h> //For htonl(), htons()
#include<stdlib.h> //For atoi()
#include<unistd.h> //For read(), write(), close()

int main(int argc, char *argv[])


{
int sockfd,newsockfd,cli_length;
struct sockaddr_in serv_addr,cli_addr;
char buffer[256];
if(argc!=2)
printf("Port not provided");
sockfd=socket(AF_INET,SOCK_STREAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
serv_addr.sin_port=htons(atoi(argv[1]));
printf("\nSocket created successfully");
if(bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{
printf("\nError in bind, change port no provided");
exit(0);
}
printf("\nBinded successfully");
listen(sockfd,5);
printf("\nServer listening..");
cli_length=sizeof(cli_addr);
newsockfd=accept(sockfd,(struct sockaddr*)&cli_addr,&cli_length);
printf("\nClient request accepted");
while(1)
{
read(newsockfd,buffer,256);
if(strcmp(buffer,"stop")==0)
exit(0);
printf("\nMessage from client : %s",buffer);
bzero(buffer,256);
printf("\nEnter the message for client : ");
scanf("%s",buffer);
write(newsockfd,buffer,256);
}
printf("\n");
close(sockfd);
return 0;}
// TCP Chat Client
#include<stdio.h>
#include<string.h> //For strcmp()
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h> //For htonl(), htons()
#include<stdlib.h> //For atoi()
#include<unistd.h> //For read(), write(), close()

int main(int argc, char *argv[])


{
int sockfd;
struct sockaddr_in serv_addr;
char buffer[256];
if(argc!=3)
printf("Hostname or port not provided");
sockfd=socket(AF_INET,SOCK_STREAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(atoi(argv[1]));
serv_addr.sin_port=htons(atoi(argv[2]));
printf("\nSocket created successfully");
if(connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{
printf("\nError in connecting");
exit(0);
}
printf("\nConnection established");
while(1)
{
if(strcmp(buffer,"stop")==0)
exit(0);
printf("\nEnter the message for server : ");
scanf("%s",buffer);
write(sockfd,buffer,256);
read(sockfd,buffer,256);
printf("\nMessage from server : %s",buffer);
}
printf("\n");
close(sockfd);
return 0;
}
OUTPUT :

//Server Terminal
[student@localhost network_lab]$ gcc -o ss tcpchatserver.c
[student@localhost network_lab]$ ./ss 1222

Socket created successfully


Binded successfully
Server listening..
Client request accepted
Message from client : hi
Enter the message for client : hello

//Client Terminal
[student@localhost network_lab]$ gcc -o cc tcpchatclient.c
[student@localhost network_lab]$ ./cc localhost 1222

Socket created successfully


Connection established
Enter the message for server : hi

Message from server : hello


Enter the message for server : stop

Message from server : stop


6.TCP FILE TRANSFER
PROGRAM CODE :
// TCP File Server
#include<stdio.h>
#include<sys/socket.h> //For socket(), bind(), listen(), accept()
#include<sys/types.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h> //For htonl(), htons()
#include<stdlib.h> //For atoi()
#include<unistd.h> //For read(), write(), close()

int main(int argc, char *argv[])


{
FILE *fptr;
int sockfd,newsockfd,cli_length;
struct sockaddr_in serv_addr,cli_addr;
char buffer[256],c;
if(argc!=2)
printf("Port not provided");
sockfd=socket(AF_INET,SOCK_STREAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
serv_addr.sin_port=htons(atoi(argv[1]));
printf("\nSocket created successfully");
if(bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{
printf("\nError in bind, change port no provided");
exit(0);
}
printf("\nBinded successfully");
listen(sockfd,5);
printf("\nServer listening..");
cli_length=sizeof(cli_addr);
newsockfd=accept(sockfd,(struct sockaddr*)&cli_addr,&cli_length);
printf("\nClient request accepted");
read(newsockfd,buffer,256);
printf("\nThe received filename is : %s",buffer);
printf("\nThe contents of the file : ");
fptr=fopen(buffer,"r");
c=fgetc(fptr);
while(c!=EOF)
{
printf("%c",c);
c=fgetc(fptr);
}
fclose(fptr);
printf("\n");
close(sockfd);
return 0;}
// TCP File Client
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h> //For htonl(), htons()
#include<stdlib.h> //For atoi()
#include<unistd.h> //For read(), write(), close()

int main(int argc, char *argv[])


{
int sockfd;
struct sockaddr_in serv_addr;
char buffer[256];
if(argc!=3)
printf("Hostname or port not provided");
sockfd=socket(AF_INET,SOCK_STREAM,0);
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(atoi(argv[1]));
serv_addr.sin_port=htons(atoi(argv[2]));
printf("\nSocket created successfully");
if(connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr))<0)
{
printf("\nError in connecting");
exit(0);
}
printf("\nConnection established");
printf("\nEnter the filename to send : ");
scanf("%s",buffer);
write(sockfd,buffer,256);
printf("\n");
close(sockfd);
return 0;
}

//Text file (file.txt)


Hello students!

OUTPUT :

//Server Terminal
[student@localhost network_lab]$ gcc -o ss tcpfileserver.c
[student@localhost network_lab]$ ./ss 5000

Socket created successfully


Binded successfully
Server listening..
Client request accepted
The received filename is : file.txt
The contents of the file : Hello students!

//Client Terminal
[student@localhost network_lab]$ gcc -o cc tcpfileclient.c
[student@localhost network_lab]$ ./cc localhost 5000

Socket created successfully


Connection established
Enter the filename to send : file.txt
8.SIMULATION OF SLIDING WINDOW PROTOCOL

PROGRAM CODE :

//Sliding Window Server (Go Back N ARQ)


#include<netinet/in.h>
#include<stdio.h>
#include<sys/types.h>
#include<stdlib.h>
#include<string.h>
#include<sys/socket.h>
#include<unistd.h>
# define size 4

int main(int argc,char *argv[])


{
int sockfd,newsockfd,clilen,n,a=1,ch,len,i,status,j;
struct sockaddr_in serv_addr,cliaddr;
char frame[256],str[20],temp[20],ack[20];
if(argc!=2)
{
fprintf(stderr,"\n Error!No port Provided\n");
exit(1);
}
sockfd=socket(AF_INET,SOCK_STREAM,0);
printf("\n Socket Successfully Created");
bzero((char *)&serv_addr,sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
serv_addr.sin_port=htons(8246);
if(bind(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr))<0)
printf("\n Error in Binding");
listen(sockfd,5);
len=sizeof(&cliaddr);
newsockfd=accept(sockfd,(struct sockaddr *)&cliaddr,&len);
if(newsockfd<0)
printf("\n Error on accept");
printf("\nEnter the text\t:\t");
scanf("%s",str);
i=0;
while(i<strlen(str))
{
memset(frame,0,20);
strncpy(frame,str+i,size);
printf("Transmitting frames");
len=strlen(frame);
for(j=0;j<len;j++)
{
printf("%d",i+j);
sprintf(temp,"%d",i+j);
strcat(frame,temp);
}
printf("\n\n");
write(newsockfd,frame,sizeof(frame));
read(newsockfd,ack,20);
sscanf(ack,"%d",&status);
if(status==-1)
printf("Transmission success\n");
else
{
printf("Recieved error in %d \n\n",status);
printf("Retransmitting the frame");
for(j=0;;)
{
frame[j]=str[j+status];
printf("%d",j+status);
j++;
if(((j+status) % 4)==0)
break;
}
printf("\n\n");
frame[j]='\0';
len=strlen(frame);
for(j=0;j<len;j++)
{
sprintf(temp,"%d",j+status);
strcat(frame,temp);
}
write(newsockfd,frame,sizeof(frame));
}
i+=size;
}
write(newsockfd,"exit",sizeof("exit"));
printf("Exiting");
sleep(5);
close(newsockfd);
close(sockfd);
}
//Sliding Window Client
include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<netinet/in.h>
#include<unistd.h>

int main(int argc,char *argv[])


{
int i,sockfd,connfd,choice,n,a=1;
struct sockaddr_in serv_addr,cli_addr;
char buffer[256],str[10],str1[10],err[10];
if(argc!=3)
{
fprintf(stderr,"Type %s followed by host name and the port number \n",argv[0]);
exit(0);
}
sockfd=socket(AF_INET,SOCK_STREAM,0);
printf("\n Socket successfully created\n");
bzero((char *)&serv_addr,sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_port=htons(8246);
serv_addr.sin_addr.s_addr=INADDR_ANY;
connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr));
for(;;)
{
read(sockfd,str,20);
if(!strcmp(str,"exit"))
{
printf("\n Exiting");
break;
}
printf("Received %s\n",str);
printf("Do you want to report error(1-yes,0-no)");
scanf("%d",&choice);
if(!choice)
write(sockfd,"-1",sizeof(-1));
else
{
printf("Enter the sequence no.of frames where error have occurred ");
scanf("%s",err);
write(sockfd,err,sizeof(err));
read(sockfd,str,20);
printf("Recieved the Retransmitted String %s",str);
}
}
}

OUTPUT :

//Server Terminal
[student@localhost network_lab]$ gcc -o ss slidingwindowserver.c
[student@localhost network_lab]$ ./ss 2255

Socket Successfully Created


Enter the text : Network
Transmitting frames0123

Recieved error in 2

Retransmitting the frame23

Transmitting frames456

Transmission success
Exiting

//Client Terminal
[student@localhost network_lab]$ gcc -o cc slidingwindowclient.c
[student@localhost network_lab]$ ./a.out localhost 2255

Socket successfully created


Received Netw0123
Do you want to report error(1-yes,0-no)1
Enter the sequence no.of frames where error have occurred 2
Recieved the Retransmitted String tw Received
Do you want to report error(1-yes,0-no)0
Received o
Do you want to report error(1-yes,0-no)0
Received r
Do you want to report error(1-yes,0-no)0
Received k
Do you want to report error(1-yes,0-no)0
7.SIMULATION OF STOP AND WAIT

PROGRAM CODE :

//Stop and Wait Server

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<arpa/inet.h>

int main(int argc,char **argv)


{
int socketmain,socketclient,child,port=5122,len=81,n, expectedframe=0;
char late_ack;
struct sockaddr_in serv,clientaddr;
int clientlen;
if((socketmain=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf("\n server cannot open socket");
exit(0);
}
bzero(&serv,sizeof(serv));
serv.sin_family=AF_INET;
serv.sin_addr.s_addr=htonl(INADDR_ANY);
serv.sin_port=htons(atoi(argv[1]));
if((bind(socketmain,(struct sockaddr*)&serv,sizeof(serv)))<0)
{
printf("\n server bind failed");
exit(1);
}
listen(socketmain,5);
clientlen = sizeof(clientaddr);
if((socketclient=accept(socketmain,(struct sockaddr*)&clientaddr,&clientlen))<0)
{
printf("\n client is bad");
exit(0);
}
char buf[len];
char str[10],frameno[]="012345678";
bzero(buf,len);
printf("FRAME NO DATA");
while(expectedframe<=8)
{
n=read(socketclient,buf,2);
if(buf[0]==frameno[expectedframe])
{
printf("\n%c %c", buf[0], buf[1]);
if(buf[0]==late_ack)
{
printf("Sending late ack\n");sleep(10);
}
write(socketclient,buf,2);
expectedframe++;
}
else
{
if(buf[0]<frameno[expectedframe])
{
printf("\nReceived the frame %c already", buf[0]);
write(socketclient,buf,2);
}
}
}
}
//Stop and Wait Client

#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<arpa/inet.h>

int main(int argc,char **argv)


{
int sockfd,n,port=5222, sentframe=0;
struct sockaddr_in serv;
char buf[100],msg[100];
if(argc!=3)
{
printf("invalid format");
exit(0);
}
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
{
printf("\n socket cannot be opened");
exit(0);
}
bzero(&serv,sizeof(serv));
serv.sin_family=AF_INET;
serv.sin_port=htons(atoi(argv[2]));
if(connect(sockfd,(struct sockaddr*)&serv,sizeof(serv))<0)
{
printf("\n connection failed");
exit(0);
}
printf("\n connected");
char error='\0';
char framelost='\0';
char acklost='\0';
char timeframe='\0';
char DATA[]="ABCDEFGHI";
char frameno[]="012345678";
int flag1=1, flag2=1;
printf(" Like to introduce error y or n");
scanf("%c",&error);
if(error=='y')
{
printf("\nEnter the ack frame no assumed to be lost\n ");
scanf(" %c",&acklost);
printf("\nEnter the frame no assumed to be lost\n ");
scanf(" %c",&framelost);
}
printf("FRAME NO DATA\n");
while(sentframe<=8)
{
buf[0]=frameno[sentframe];
buf[1]=DATA[sentframe];
printf("%c %c\n",buf[0], buf[1]);
if(framelost==buf[0] && error=='y' && flag1==1)
{
printf("Time out due to frame lost : Ack not received.....Resending the same
frame\n");
flag1=0;
sleep(4);
continue;
}
else
{
write(sockfd,buf,2);
}
sleep(4);
if((n=read(sockfd,buf,2))!=0)
{
if(acklost==buf[0] && error=='y' && flag2==1)
{
printf("Time out due to ack lost : Ack not received.....Resending the same
frame\n");
flag2=0;
}
else if(buf[0]==frameno[sentframe])
{
sentframe++;
}
else
{
printf("Time out....");
}
}
}
}

OUTPUT :

//Server Terminal
[student@localhost network_lab]$ gcc -o ss stopwaitserver.c
[student@localhost network_lab]$ ./ss 6655
FRAME NO DATA
0 A
1 B
2 C
3 D
Received the frame 3 already
4 E
5 F
6 G
7 H
8 I

//Client Terminal
[student@localhost network_lab]$ gcc -o cc stopwaitclient.c
[student@localhost network_lab]$ ./cc localhost 6655

connected Like to introduce error y or ny

Enter the ack frame no assumed to be lost


3

Enter the frame no assumed to be lost


2
FRAME NO DATA
0 A
1 B
2 C
Time out due to frame lost : Ack not received.....Resending the same frame
2 C
3 D
Time out due to ack lost : Ack not received.....Resending the same frame
3 D
4 E
5 F
6 G
7 H
8 I
9.SIMULATION OF ARP PROTOCOL

PROGRAM CODE :

//ARP program

#include<sys/types.h>
#include<sys/socket.h>
#include<net/if_arp.h>
#include<sys/ioctl.h>
#include<stdio.h>
#include<string.h>
#include<arpa/inet.h>
#include<netinet/in.h>
#include<stdlib.h>

int main(int argc,char *argv[])


{
struct sockaddr_in sin={0};
struct arpreq myarp={{0}};
unsigned char *ptr;
int sd;
sin.sin_family=AF_INET;
if(inet_aton(argv[1],&sin.sin_addr)==0)
{
printf("IP address Entered '%s' is not valid \n",argv[1]);
exit(0);
}
memcpy(&myarp.arp_pa,&sin,sizeof(myarp.arp_pa));
strcpy(myarp.arp_dev,"enp3s0");
sd=socket(AF_INET,SOCK_DGRAM,0);
if(ioctl(sd,SIOCGARP,&myarp)==1)
{
printf("No Entry in ATP cache for '%s'\n",argv[1]);
exit(0);
}
ptr=&myarp.arp_ha.sa_data[0];
printf("\nMAC address for %s is ",argv[1]);
printf("%x:%x:%x:%x:%x:%x\n",*ptr,*(ptr+1),*(ptr+2),*(ptr+3),*(ptr+4),*(ptr+5));
return 0;
}
OUTPUT :

[student@localhost network_lab]$ arp -a //To view routing table


? (172.16.10.65) at 00:01:6c:c9:c6:3e [ether] on enp3s0
? (172.16.9.188) at 00:1a:4d:7c:6c:67 [ether] on enp3s0
? (172.16.10.56) at 00:0b:2b:10:b3:f8 [ether] on enp3s0
? (172.16.10.59) at 00:e0:4c:97:d5:d6 [ether] on enp3s0
gateway (172.16.8.1) at 00:02:b6:42:88:1c [ether] on enp3s0
? (172.16.10.44) at 00:01:6c:d0:ac:d1 [ether] on enp3s0
? (172.16.10.24) at 00:1a:4d:a6:a9:46 [ether] on enp3s0
? (172.16.10.6) at 00:0f:ea:92:d2:ef [ether] on enp3s0
? (172.16.9.33) at 00:e0:4c:55:2d:2c [ether] on enp3s0
? (172.16.8.123) at 50:9a:4c:34:d4:cc [ether] on enp3s0
? (172.16.8.126) at <incomplete> on enp3s0
? (172.16.10.100) at 00:01:6c:d0:ac:a3 [ether] on enp3s0

[student@localhost network_lab]$ gcc arp.c


[student@localhost network_lab]$ ./a.out 172.16.9.33

MAC address for 172.16.9.33 is 0:e0:4c:55:2d:2c


10.SIMULATION OF DNS

PROGRAM CODE :

//DNS Program

#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<netdb.h>
#include<arpa/inet.h>

int main(int argc,char *argv[1])


{
struct hostent *hen;
if(argc!=2)
{
fprintf(stderr,"Error! Enter the hostname \n");
exit(1);
}
hen=gethostbyname(argv[1]);
if(hen==NULL)
{
fprintf(stderr,"Host not found \n");
}
printf("Hostname is : %s \n",hen->h_name);
printf("IP address is : %s \n",inet_ntoa(*((struct in_addr *)hen->h_addr)));
}

OUTPUT :

[student@localhost network_lab]$ gcc dns.c


[student@localhost network_lab]$ ./a.out www.google.com
Hostname is : www.google.com
IP address is : 172.217.163.68
11.SIMULATION OF PING AND TRACEROUTE

PROGRAM CODE :
//Ping program
#include <stdlib.h>
#include <stdio.h>
#include <oping.h>

int main(int argc, char **argv)


{
pingobj_t *ping;
pingobj_iter_t *iter;
if ((ping = ping_construct()) == NULL)
{
fprintf(stderr, "ping_construct failed\n");
return (-1);
}
printf("ping_construct() success\n");
if (ping_host_add(ping, argv[1]) < 0)
{
const char * errmsg = ping_get_error(ping);
fprintf(stderr, "ping_host_add(argv[1]) failed. %s\n", errmsg);
return (-1);
}
printf("ping_host_add() success\n");
while (1)
{
printf("Ping send function value : %d",ping_send(ping));
if (ping_send(ping) < 0)
{
fprintf(stderr, "ping_send failed\n");
return(-1);
}
printf("ping_send() success\n");
for (iter = ping_iterator_get(ping); iter != NULL; iter=ping_iterator_next(iter))
{
char hostname[100];
double latency;
unsigned int len;
printf("ping_iterator_get() success\n");
len = 100;
ping_iterator_get_info(iter, PING_INFO_HOSTNAME, hostname, &len);
len = sizeof(double);
ping_iterator_get_info(iter, PING_INFO_LATENCY, &latency, &len);
printf("Hostname = %s, Latency = %f\n", hostname, latency);
}
sleep(1);
}
return (0);}
OUTPUT :

[root@localhost network_lab]# gcc ping_pgm.c -loping


[root@localhost network_lab]# ./a.out 172.16.8.126
ping_construct() success
ping_host_add() success
Ping send function value : 0ping_send() success
ping_iterator_get() success
Hostname = 172.16.8.126, Latency = -1.000000
12.RPC

PROGRAM CODE :

/*simp.x*/
struct operands /*Structure for input arguments*/
{
int x;
int y;
};
program SIMP_PROG
{
version SIMP_VERSION
{
int ADD(operands) = 1; /*Procedure_no_1*/
int SUB(operands) = 2; /*Procedure_no_2*/
} = 1; /*Version_no*/
}=555555555; /*Program_no*/
//rpcserver.c
#include"simp.h" //Autogenerated file by rpcgen
#include"stdio.h"

int *add_1_svc(operands *argp,struct svc_req *rqstp) //Addition function definition


{
static int result;
printf("\nGot request:add %d,%d\n",argp->x,argp->y);
result = argp->x + argp->y;
return(&result);
}
int *sub_1_svc(operands *argp,struct svc_req *rqstp) //Subtraction function definition
{
static int result;
printf("\nGot request:subract %d,%d\n",argp->x,argp->y);
result = argp->x - argp->y;
return(&result);
}
//rpcclient.c
#include"stdio.h"
#include"simp.h" //Autogenerated file by rpcgen

int main(int argc,char *argv[])


{
CLIENT *clnt;
int x,y;
operands ops;
int *result1,*result2;
if(argc!=4)
{
fprintf(stderr,"Usage:%s hostname num1 num2\n",argv[0]);
exit(0);
}
clnt=clnt_create(argv[1],SIMP_PROG,SIMP_VERSION,"udp");
if(clnt==(CLIENT *)NULL)
{
clnt_pcreateerror(argv[1]);
exit(1);
}
x=atol(argv[2]);
y=atol(argv[3]);
ops.x=x;
ops.y=y;
result1=add_1(&ops,clnt); //Addition procedure call
result2=sub_1(&ops,clnt); //Subtraction procedure call
printf("%d + %d = %d\n",x,y,*result1);
printf("%d - %d = %d\n",x,y,*result2);
return(0);
}

OUTPUT :

[student@localhost network_lab]$ rpcinfo //Check if portmapper service is enabled (If not


use "service rpcbind start" command to start service)
program version netid address service owner
100000 4 tcp6 ::.0.111 portmapper superuser
100000 3 tcp6 ::.0.111 portmapper superuser
100000 4 udp6 ::.0.111 portmapper superuser
100000 3 udp6 ::.0.111 portmapper superuser
100000 4 tcp 0.0.0.0.0.111 portmapper superuser
100000 3 tcp 0.0.0.0.0.111 portmapper superuser
100000 2 tcp 0.0.0.0.0.111 portmapper superuser
100000 4 udp 0.0.0.0.0.111 portmapper superuser
100000 3 udp 0.0.0.0.0.111 portmapper superuser
100000 2 udp 0.0.0.0.0.111 portmapper superuser
100000 4 local /run/rpcbind.sock portmapper superuser
100000 3 local /run/rpcbind.sock portmapper superuser
555555555 1 udp 0.0.0.0.151.29 - unknown
555555555 1 tcp 0.0.0.0.186.115 - unknown

[student@localhost network_lab]$ rpcgen simp.x //Generates simp.h (Header file), simp_svc


(Server stub), simp_clnt (Client stub), simp_xdr(External data representaion file)

//Server Terminal
[student@localhost network_lab]$ gcc -o ss rpcserver.c simp_svc.c simp_xdr.c
[student@localhost network_lab]$ ./ss

Got request:add 60,10

Got request:subract 60,10

//Client Terminal
[student@localhost network_lab]$ gcc -o cc rpcclient.c simp_clnt.c simp_xdr.c
[student@localhost network_lab]$ ./cc localhost 60 10
60 + 10 = 70
60 - 10 = 50
Filename: rint.java
import java.io.*;
import java.rmi.*;
public interface rint extends Remote
{
public int add(int a,int b)throws RemoteException;
publicintsub(intx,inty)throwsRemoteException;
public int mul(int p,int q)throws RemoteException;
}
File Name: rclass.java
importjava.io.*;
import java.rmi.*;
import java.net.*;
import java.rmi.server.*;
public class rclass extends UnicastRemoteObject implements rint
{
publicrclass()throwsRemoteException{}
publicintadd(inta,intb)throwsRemoteException
{
intc=a+b;
returnc;
}
publicintsub(intx,inty)throwsRemoteException
{
intd=x-y;
returnd;
}
publicintmul(intp,intq)throwsRemoteException
{
inte=p*q;
returne;
}
}
File Name: sclass.java

Importjava.io.*;
import java.rmi.*;
import java.net.*;
public class sclass
{
public static void main(String args[ ])
{
try
{
rclass r=new rclass();
Naming.rebind("sum",r);
}
catch(Exceptione){}
}
}
Filename: cclass.java
import java.io.*;
import java.rmi.*;
public class cclass
{
public static void main(String args[])
{
try
{
int b,b1;
Strings;
s="rmi://localhost/sum";
rintx=(rint)Naming.lookup(s);
b=Integer.parseInt(args[0]);
b1=Integer.parseInt(args[1]);
intz=x.add(b,b1);
intz1=x.sub(b,b1);
int z2=x.mul(b,b1);
System.out.println("Sum"+z);
System.out.println("Difference"+z1);
System.out.println("Product"+z2);
}
catch(Exceptione){ }
}
}
OUTPUT
Sum 4
Difference 0
Production 4
13.SIMULATION OF SNMP

PROGRAM CODE :

//SNMP Manager (Client code)

#include<stdio.h>
#include<sys/types.h>
#include<netinet/in.h>

int main()
{
int csd,cport,len,i;
char sendmsg[20],rcvmsg[100],rmsg[100],oid[100];
struct sockaddr_in servaddr;
printf("\nEnter the port\t:\t");
scanf("%d",&cport);
csd=socket(AF_INET,SOCK_STREAM,0);
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(cport);
printf("\nSocket created successfully");
if(connect(csd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0)
printf("\nError in connection");
else
printf("\nAgent connected");
printf("\n1.Client window size");
printf("\n2.System date and time");
printf("\nEnter the number for the type of information needed\t:\t");
scanf("%d",&i);
if(i==1)
{
printf("\nEnter the object ID for client\t:\t");
scanf("%s",oid);
send(csd,oid,100,0);
recv(csd,rcvmsg,100,0);
printf("\nThe window size of %s is %s",oid,rcvmsg);
}
else
{
printf("\nEnter the object ID for system\t:\t");
scanf("%s",oid);
send(csd,oid,100,0);
recv(csd,rmsg,100,0);
printf("\nThe manufacturing date for %s is %s",oid,rmsg);
recv(csd,rmsg,100,0);
printf("\nThe time of last utilization for %s is %s",oid,rmsg);
}}
//SNMP Agent 1 (Server code)

#include<stdio.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<string.h>

int main()
{
int i,j,sd,sd2,nsd,clilen,sport,len;
char sendmsg[20],recvmsg[100];
char oid[5][10]={"client1","client2","client3","client4","client5"};
char wsize[5][5]={"5","10","15","3","6"};
struct sockaddr_in servaddr,cliaddr;
printf("\nEnter the server port\t:\t");
scanf("%d",&sport);
sd=socket(AF_INET,SOCK_STREAM,0);
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(sport);
printf("\nSocket created successfully");
sd2=bind(sd,(struct sockaddr*)&servaddr,sizeof(servaddr));
if(sd2<0)
printf("\nError in bind");
else
printf("\nBinded successfully");
listen(sd,5);
clilen=sizeof(cliaddr);
nsd=accept(sd,(struct sockaddr*)&cliaddr,&clilen);
if(nsd<0)
printf("\nError on accept");
else
printf("\nAccepted");
recv(nsd,recvmsg,100,0);
for(i=0;i<5;i++)
if(strcmp(recvmsg,oid[i])==0)
send(nsd,wsize[i],100,0);
else
continue;
}
//SNMP Agent 2 (Server code)

#include<stdio.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<string.h>
int main()
{
int i,j,sd,sd2,nsd,clilen,sport,len;
char sendmsg[20],recvmsg[100];
char oid[5][10]={"system1","system2","system3","system4","system5"};
char mdate[5][15]={"1.10.95","10.03.08","14.03.81","11.07.07","17.12.77"};
char time[5][15]={"9am","10pm","11am","12.30pm","11.30am"};
struct sockaddr_in servaddr,cliaddr;
printf("\nEnter the server port\t:\t");
scanf("%d",&sport);
sd=socket(AF_INET,SOCK_STREAM,0);
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
servaddr.sin_port=htons(sport);
printf("\nSocket created successfully");
sd2=bind(sd,(struct sockaddr*)&servaddr,sizeof(servaddr));
if(sd2<0)
printf("\nError in bind");
else
printf("\nBinded successfully");
listen(sd,5);
clilen=sizeof(cliaddr);
nsd=accept(sd,(struct sockaddr*)&cliaddr,&clilen);
if(nsd<0)
printf("\nError on accept");
else
printf("\nAccepted");
recv(nsd,recvmsg,100,0);
for(i=0;i<5;i++)
{
if(strcmp(recvmsg,oid[i])==0)
{
send(nsd,mdate[i],100,0);
send(nsd,time[i],100,0);
}
else
continue;
}
}

OUTPUT :

//Agent 1 terminal (Server code)


[student@localhost network_lab]$ gcc -o ss1 snmpagent1.c
[student@localhost network_lab]$ ./ss1

Enter the server port : 1234

Socket created successfully


Binded successfully
Accepted

//Manager terminal (Client code)


[student@localhost network_lab]$ gcc -o cc snmpmanager.c
[student@localhost network_lab]$ ./cc

Enter the port : 1234

Socket created successfully


Agent connected
1.Client window size
2.System date and time

Enter the number for the type of information needed : 1

Enter the object ID for client : client3

The window size of client3 is 15

//Agent 2 terminal (Server code)


[student@localhost network_lab]$ gcc -o ss2 snmpagent2.c
[student@localhost network_lab]$ ./ss2

Enter the server port : 1235

Socket created successfully


Binded successfully
Accepted

//Manager terminal (Client code)


[student@localhost network_lab]$ gcc -o cc snmpmanager.c
[student@localhost network_lab]$ ./cc

Enter the port : 1235

Socket created successfully


Agent connected
1.Client window size
2.System date and time

Enter the number for the type of information needed : 2


Enter the object ID for system : system5

The manufacturing date for system5 is 17.12.77


The time of last utilization for system5 is 11.30am

Вам также может понравиться