Linux下使用C语言编写获取某个域名IP地址的程序


根据《UNIX环境高级编程(第二版)》(相关阅读:)的相关章节的描述,编写了这个程序,以验证对所学知识的理解是否正确。

  1. /*  
  2. * 获取某个域名的ip地址,以列表形式打印。  
  3. *  
  4. * 作者: nswish  
  5. * 2012-01-30  
  6. *  
  7. * 在如下环境编译通过:  
  8. * KUbuntu 11.1  
  9. * gcc version 4.6.1  
  10. */  
  11. #include <stdio.h>   
  12. #include <netdb.h>   
  13. #include <stdlib.h>   
  14.   
  15. main(int argc, char *argv[]){   
  16.     struct addrinfo * res, *pt;   
  17.     struct sockaddr_in *sinp;   
  18.     const char *addr;   
  19.     char abuf[INET_ADDRSTRLEN];   
  20.     int succ=0,i=0;   
  21.   
  22.     if(argc == 1)   
  23.     {   
  24.         printf("USAGE: getip <server name>\nFor example:\n    getip www.google.com\n");   
  25.         exit(1);   
  26.     }   
  27.   
  28.     succ = getaddrinfo(argv[1], NULL, NULL, &res);   
  29.     if(succ != 0)   
  30.     {   
  31.         printf("Can't get address info! error code = %d", succ);   
  32.         exit(succ);   
  33.     }   
  34.   
  35.     for(pt=res, i=0; pt != NULL; pt=pt->ai_next, i++){   
  36.         sinp = (struct sockaddr_in *)pt->ai_addr;   
  37.         addr = (const char *)inet_ntop(AF_INET, &sinp->sin_addr, abuf, INET_ADDRSTRLEN);   
  38.         printf("%2d. IP=%s\n", i, addr);   
  39.     }   
  40. }  

将以上代码保存在名为getip.c的文件中,然后使用命令 gcc getip.c -o getip。

如果系统中没有gcc编译程序,可执行sudo apt-get install gcc来安装。

相关内容