linux下获取域名的IP地址

通过调用gethostbyname()获取域名的ip地址

头文件:linux/netdb.h  win/winsock2.h

结构体:
1  struct hostent
2 {
3  char *h_name;                 // 官方域名
4  char **h_aliases;             // 别名
5  int h_addrtype;              // ip类型
6  int h_length;
7  char **h_addr_list;          // ip地址
8  }                   

gethostbyname.c

 

 1 #include
 2 #include
 3 #include
 4 #include
 5 #include
 6 
 7  void error_handling( char *message);
 8 
 9  int main( int argc, char *argv[])
10 {
11      int i;
12      struct hostent *host;             // 定义host结构体变量
13       if(argc !=  2 )
14     {
15         printf( " Usage: %s \n ", argv[ 0]);
16         exit( 1);
17     }
18 
19     host=gethostbyname(argv[ 1]);     // 调用gethostbyname()
20       if(!host)
21         error_handling( " gethost...error... ");
22     
23      // 打印域名
24      printf( " official name: %s \n ",host->h_name);
25      // 打印别名
26       for(i= 0;host->h_aliases[i];i++)
27         printf( " alises %d: %s \n ",i+ 1,host->h_aliases[i]);
28      // ip类型
29      printf( " address type: %s \n ",(host->h_addrtype==AF_INET)? " AF_INET ": " AF_INET6 ");
30      // 枚举ip地址
31       for(i= 0;host->h_addr_list[i];i++)
32         printf( " IP addr %d: %s \n ",i+ 1,inet_ntoa(*( struct in_addr*)host->h_addr_list[i]));
33 
34      return  0;
35 
36 }
37  void error_handling( char *message)     // 容错函数
38  {
39     fputs(message,stderr);
40     fputc( ' \n ',stderr);
41     exit( 1);
42 }

运行:

gcc gethostbyname.c -o getIP

./getIP www.baidu.com

输出:

 

official name: www.a.shifen.com
alises 1: www.baidu.com
address type: AF_INET
IP addr 1: 119.75.218.70
IP addr 2: 119.75.217.109
 百度竟然有两个ip。。。

 

 

zyp@zyp-ubuntu:~/project$ ./hostname www.taobao.com
official name: www.taobao.com.danuoyi.tbcache.com
alises 1: www.taobao.com
address type: AF_INET
IP addr 1: 121.194.7.215
danuoyi乾坤大挪移吗(⊙_⊙)?
 

 

转载于:https://www.cnblogs.com/gjbmxy/p/5061018.html

你可能感兴趣的:(linux下获取域名的IP地址)