歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux下使用C語言編寫獲取某個域名IP地址的程序

根據《UNIX環境高級編程(第二版)》(相關閱讀:http://www.linuxidc.com/Linux/2011-04/34662.htm)的相關章節的描述,編寫了這個程序,以驗證對所學知識的理解是否正確。

  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來安裝。

Copyright © Linux教程網 All Rights Reserved