从书上抄的
#include <unistd.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
char *host = NULL, **names = NULL, **addrs = NULL;
struct hostent *hostinfo = NULL;
if ( argc == 1 ) { //设置主机为命令行参数
char myname[256];
gethostname(myname, sizeof(myname));
host = myname;
}
else {
host = argv[1];
}
//获取主机的信息
hostinfo = gethostbyname(host);
if ( hostinfo == NULL ) {
fprintf(stderr, "can't get info from host %s./n", host);
exit(EXIT_FAILURE);
}
//将主机的信息打印出来
printf("results for host %s:/n", host);
printf("Official name:%s/n", hostinfo->h_name); //正式名
printf("/tAlias:");
names = hostinfo->h_aliases; //别名
while ( *names ) {
printf(" %s;", *names++);
}
printf("/n");
if ( hostinfo->h_addrtype != AF_INET ) {
fprintf(stderr, "Not an IP host./n");
exit(EXIT_FAILURE);
}
addrs = hostinfo->h_addr_list; //IP地址信息
while ( *addrs ) {
printf("/taddress:%s", inet_ntoa(*(struct in_addr *)*addrs));
addrs++;
}
printf("/n");
return 0;
}