#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <time.h>
#include <iostream>
#include <sys/time.h>
using namespace std;
int main(int argc, char** argv) {
if(argc<2) {
cout << "param error" << endl;
exit(1);
}
char *hostname = argv[1];
struct sockaddr_in address;
int client_sock;
int len,result;
int n,tmp;
struct hostent *h = gethostbyname(hostname);
printf("host name :%s\n",h->h_name);
printf("IP address :%s\n",inet_ntoa(*(struct in_addr*)h->h_addr));
//转化地址
char *ipstr = (char *)inet_ntoa(*(struct in_addr*)h->h_addr);
client_sock=socket(AF_INET,SOCK_STREAM,0);
address.sin_addr.s_addr=inet_addr(ipstr);
address.sin_family=AF_INET;
address.sin_port=htons(80);
len=sizeof(address);
struct timeval tpstart,tpend;
float timeuse;
//开始时间
gettimeofday(&tpstart,NULL);
result=connect(client_sock,(struct sockaddr *)&address,len);
//结束时间
gettimeofday(&tpend,NULL);
//时间计算
timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+tpend.tv_usec-tpstart.tv_usec;
timeuse/=1000000;
printf("Used Time:%f\n",timeuse);
if(result==-1){
printf("error!");
exit(-1);
}
close(result);
exit(0);
return (EXIT_SUCCESS);
}
通过输入域名,检测连接时间,在这做个笔记,供大家以后参考,
1. gethostbyname返回的结构 struct hostent, 获得域名的IP地址;
2. 把IP绑定到address上;
3. gettimeday函数,计算微秒。