Ping

You might also like

You are on page 1of 5

/* SERVER */

#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <netinet/in.h> #include <string.h> #include <sys/socket.h> int main() { int sd,i=0,len; struct sockaddr_in ser, cli; char arr[30] = ""; if ((sd=socket(AF_INET,SOCK_DGRAM,0))<0) { printf ( "\n ERROR :: SOCKET CREATION PROBLEM \n"); return 0; } bzero(&ser,sizeof(ser)); bzero(&cli,sizeof(cli)); ser.sin_family = cli.sin_family = AF_INET; ser.sin_port = htons(7056); ser.sin_addr.s_addr = cli.sin_addr.s_addr = htonl(INADDR_ANY); cli.sin_port=htons(3489); if ( bind(sd,(struct sockaddr*)&ser,sizeof(ser))<0)

{ printf("\n ERROR :: BINDING PROBLEM\n"); return 0; } len = sizeof(ser); for(i=0;i<4;i++) { recvfrom(sd,&arr,30,0,(struct sockaddr*)&cli,&len); sendto(sd,"received",10,0,(struct sockaddr*)&cli,len); } close(sd); return 0; } /*CLIENT*/

#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <netinet/in.h> #include <string.h> #include <sys/socket.h> int main() { int sd,i=0,len; long sec,msec;

struct sockaddr_in ser,cli; struct timeval tp; struct timezone *p; char arr[30]=""; if((sd=socket(AF_INET,SOCK_DGRAM,0))==-1) { printf("\n ERROR :: SOCKET CREATIN PROBLEM\n"); return 0; } bzero(&ser,sizeof(ser)); bzero(&cli,sizeof(cli)); ser.sin_family=cli.sin_family=AF_INET; ser.sin_port=htons(7056); ser.sin_addr.s_addr=cli.sin_addr.s_addr=htonl(INADDR_ANY); cli.sin_port=htons(3489); if(bind(sd,(struct sockaddr *)&cli,sizeof(cli))==-1) { printf("\n ERROR :: BINDING PROBLEM\n"); return 0; } while(i<30) { scanf("%c", &arr[i]); if(arr[i++]=='\n') {

arr[i-1]='\0'; break; } } len=sizeof(ser); for(i=0;i<4;i++) { gettimeofday(&tp,&p); sec=tp.tv_sec; msec=tp.tv_usec; sendto(sd,"ping",5,0,(struct sockaddr*)&ser,sizeof(ser)); recvfrom(sd,arr,10,0,(struct sockaddr *)&ser,&len); gettimeofday(&tp,&p); sec=tp.tv_sec-sec; msec=tp.tv_usec-msec; msec+=sec*1000000; if(!strcmp(arr,"received")) printf("64 Bytes from 127.0.0.1:icmp_seq_no:%d time=%ldmicrosecs\n",i,msec); } close(sd); return 0; } Output /*server.c*/

[12mcs009@mepcolinux:~]cc pingserver.c [12mcs009@mepcolinux:~]./a.out [12mcs009@mepcolinux:~]

/*client.c*/

[12mcs009@mepcolinux:~]cc pingclient.c [12mcs009@mepcolinux:~]./a.out 127.0.0.1 64 Bytes from 127.0.0.1:icmp_seq_no:0 time=40microsecs 64 Bytes from 127.0.0.1:icmp_seq_no:1 time=16microsecs 64 Bytes from 127.0.0.1:icmp_seq_no:2 time=16microsecs 64 Bytes from 127.0.0.1:icmp_seq_no:3 time=128microsecs [12mcs009@mepcolinux:~]

You might also like