You are on page 1of 2

#include<stdio.

h>
#include<stdlib.h>
#include<time.h>
#include<string.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<netdb.h>
int TCPecho(const char *host,const char *service);
int main(int argc,char *argv[])
{
char *host=argv[1];
char *service="echo";
if(argc!=2)
{
printf("enter the server Ip address and echo service");
}
TCPecho(host,service);
}
int TCPecho(const char *host,const char *service)
{
char buf[129];
double t1,t2;
struct timeval start,end;
int s,n;
int outchars,inchars;
struct sockaddr_in to_addr;

s=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
if(s>=0)
{
printf("socket %d created\n",s);
}
else
{
printf("socket not created");
exit(1);
}
to_addr.sin_addr.s_addr=inet_addr(host);
to_addr.sin_family=AF_INET;
to_addr.sin_port=htons(7);
connect(s,(struct sockaddr*)&to_addr,sizeof(to_addr));
perror("connect");

while(fgets(buf,sizeof(buf),stdin))
{
outchars=strlen(buf);
// printf("outchars is %d \n", outchars);
(void)write(s,buf,outchars);
if(gettimeofday(&start,NULL))
{
printf("time failed");
}
for(inchars=0;inchars<outchars;inchars+=n)
{
n=read(s,&buf[inchars],outchars-inchars);
if(n<0)
printf("read error");
}
fputs(buf,stdout);
if(gettimeofday(&end,NULL))
{
printf("time failed");
exit(1);
}
printf("\n");
t1+=start.tv_sec+(start.tv_usec/1000000.0);
t2+=end.tv_sec+(end.tv_usec/1000000.0);
printf("RTT=%g ms/n",(t2-t1)/n);
printf("\n");
}

You might also like