码迷,mamicode.com
首页 > 其他好文 > 详细

hostent使用说明

时间:2014-09-09 12:25:48      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   io   使用   ar   div   sp   

gethostbyname()函数:

通过名字地址获取相关信息的函数,返回的是一个struct hostent *,

hostent是host entry的缩写,该结构记录主机的信息,包括主机名、别名、地址类型、地址长度和地址列表。

就是结构指针,结构体的成员是这样定义的:

1 struct hostent
2 {
3     char* h_name;
4     char* h_aliases;
5     short h_addrtype;
6     short h_length;
7     char **h_addr_list;
8 };

#define h_addr h_addr_list[0]
h_name – 地址的正式名称。
h_aliases – 空字节-地址的预备名称的指针。
h_addrtype –地址类型; 通常是AF_INET(IPv4)。
h_length – 地址的比特长度。
h_addr_list – 零字节-主机网络地址指针。按照网络字节顺序存储。
h_addr - h_addr_list中的首地址。
 
示例,通过www.sina.com获取主机别名等信息:
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<unistd.h>
 4 #include<sys/types.h>
 5 #include<sys/socket.h>
 6 #include<netinet/in.h>
 7 #include<errno.h>
 8 #include<netdb.h>
 9 #include<string.h>
10 
11 int main(void)
12 {
13     char *ptr="www.baidu.com";
14     struct hostent *hptr;
15     if((hptr=gethostbyname(ptr))==NULL)
16     {
17         printf("Error to gethostbyname\n");
18         exit(1);
19     }
20     printf("hostname is %s\n",hptr->h_name);
21 
22     char **alianame=hptr->h_aliases;
23     while(*alianame)
24     {
25         printf("alias name is %s\n",*alianame);
26         ++alianame;
27     }
28     return 0;
29 }

 

返回的是主机名和别名

 

如果需要或取IP,那么需要像这样:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<unistd.h>
 4 #include<sys/types.h>
 5 #include<sys/socket.h>
 6 #include<netinet/in.h>
 7 #include<arpa/inet.h>
 8 #include<errno.h>
 9 #include<netdb.h>
10 #include<string.h>
11 
12 int main(void)
13 {
14     char *ptr="www.baidu.com";
15     struct hostent *hptr;
16     if((hptr=gethostbyname(ptr))==NULL)
17     {
18         printf("Error to gethostbyname\n");
19         exit(1);
20     }
21     printf("hostname is %s\n",hptr->h_name);
22 
23     char **alianame=hptr->h_aliases;
24     while(*alianame)
25     {
26         printf("alias name is %s\n",*alianame);
27         ++alianame;
28     }

29 const char *ip; 30 31 int addrtype=hptr->h_addrtype; 32 char str[INET6_ADDRSTRLEN]; 33 ip=inet_ntop(addrtype,hptr->h_addr,str,sizeof(str)); 34 35 printf("ip address is : %s\n",ip);

36 return 0; 37 }

 

hostent使用说明

标签:style   blog   color   os   io   使用   ar   div   sp   

原文地址:http://www.cnblogs.com/lhyz/p/3962090.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!