PING COMMAND USING SOCKETS
	  By karthick
, in 
      
IMPLEMENTATION OF  PING  COMMAND USING SOCKETS
, 
      
0 Comments
        
Server program
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<errno.h>
//#define
port 1567
int
main()
{
        int sock,con,byte_rec,flag=0,port;
        char send_data[1024],rec_data[1024];
        struct sockaddr_in ser,cli;
        int sin_size,i;
        if((sock=socket(AF_INET,SOCK_STREAM,0))==-1)
        {
                perror("Socket\n");
                exit(1);
        }
        ser.sin_family=AF_INET;
        printf("Enter the port number   :");
        scanf("%d",&port);
        ser.sin_port=htons(port);
        ser.sin_addr.s_addr=INADDR_ANY;
        bzero(&(ser.sin_zero),8);
        if(bind(sock,(struct
sockaddr*)&ser,sizeof(struct sockaddr))==-1)
        {
                perror("can't
bind\n");
                exit(1);
        }
        if(listen(sock,3)==-1)
        {
                perror("listen\n");
                exit(1);
        }
        printf("Waiting \n");
        sin_size=sizeof(struct sockaddr_in);
        con=accept(sock,(struct
sockaddr*)&cli,&sin_size);
        printf("Connected\n");
       
while(1)
        {
               
byte_rec=recv(con,rec_data,1024,0);
                rec_data[byte_rec]='\0';
                printf("\n\n\t DATA
RECEIVED : %s" ,rec_data);
               
if(strcmp(rec_data,"end") == 0)
                  break;
               
send(con,rec_data,strlen(rec_data),0);
        }
        close(con);
        close(sock);
        return 0;
}
Client program
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<netdb.h>
#include<errno.h>
#include<sys/time.h>
int
main()
{
        int sock,byte_rec,i=0,port;
        char send_data[1024],rec_data[1024];
        long sec1,sec2,msec1,msec2;
        struct hostent *host;
        struct sockaddr_in ser,cli;
        struct timeval tv;
        struct timezone tz;
       
host=gethostbyname("192.168.1.134");
       
if((sock=socket(AF_INET,SOCK_STREAM,0))==-1)
        {
                perror("Socket\n");
                exit(1);
        }
        printf("socket created\n");
        ser.sin_family=AF_INET;
        printf("Enter the port number   :");
        scanf("%d",&port);
        ser.sin_port=htons(port);
        ser.sin_addr= *((struct in_addr
*)host->h_addr);
        bzero(&(ser.sin_zero),8);
        if(connect(sock,(struct
sockaddr*)&ser,sizeof(struct sockaddr))==-1)
        {
                perror("connect\n");
                exit(1);
        }
        while(1)
        {
                printf("Enter the data to
be sent : ");
               
scanf("%s",send_data);
                i++;
                gettimeofday(&tv,&tz);
                sec1=tv.tv_sec;
                msec1=tv.tv_usec;
               
send(sock,send_data,strlen(send_data),0);
               
if(strcmp(send_data,"end")==0)
                  break;
               
byte_rec=recv(sock,rec_data,1024,0);
                gettimeofday(&tv,&tz);
                sec2=tv.tv_sec;
                msec2=tv.tv_usec;
                rec_data[byte_rec]='\0';
                printf("Data received :
%s\n",rec_data);
                sec1=sec2-sec1;
                msec1=msec2-msec1;
                msec1=msec1+(sec1*1000000);
                printf("64 bytes received from
192.168.1.134 : ICMP seq no - %d:
 time - %ld microseconds\n",i+1,msec1);
        }
       
close(sock);                                                         
        return 0;
}
OUTPUT
SERVER
[11ca013@mcalinux
network]$ cc 7pingser.c
[11ca013@mcalinux
network]$ ./a.out
Enter
the port number   :7624
Waiting
Connected
         DATA RECEIVED : ping
         DATA RECEIVED : hi
         DATA RECEIVED : how
        
DATA RECEIVED : welcome
         DATA RECEIVED : end
CLIENT
[11ca013@mcalinux
network]$ cc 7pingclie.c
[11ca013@mcalinux
network]$ ./a.out
socket
created
Enter
the port number   :7624
Enter
the data to be sent : ping
Data
received : ping
64
bytes received from 192.168.1.134 : ICMP seq no - 2: time - 86 microseconds
Enter
the data to be sent : hi
Data
received : hi
64
bytes received from 192.168.1.134 : ICMP seq no - 3: time - 83 microseconds
Enter
the data to be sent : how
Data
received : how
64
bytes received from 192.168.1.134 : ICMP seq no - 4: time - 66 microseconds
Enter
the data to be sent : welcome
Data
received : welcome
64
bytes received from 192.168.1.134 : ICMP seq no - 5: time - 69 microseconds
Enter
the data to be sent : end

0 Response to "PING COMMAND USING SOCKETS"
Post a Comment