歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux下使用C語言編寫獲取某個域名IP地址的程序

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

日期:2017/3/1 10:34:55   编辑:Linux編程

根據《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. main(int argc, char *argv[]){
  15. struct addrinfo * res, *pt;
  16. struct sockaddr_in *sinp;
  17. const char *addr;
  18. char abuf[INET_ADDRSTRLEN];
  19. int succ=0,i=0;
  20. if(argc == 1)
  21. {
  22. printf("USAGE: getip <server name>\nFor example:\n getip www.google.com\n");
  23. exit(1);
  24. }
  25. succ = getaddrinfo(argv[1], NULL, NULL, &res);
  26. if(succ != 0)
  27. {
  28. printf("Can't get address info! error code = %d", succ);
  29. exit(succ);
  30. }
  31. for(pt=res, i=0; pt != NULL; pt=pt->ai_next, i++){
  32. sinp = (struct sockaddr_in *)pt->ai_addr;
  33. addr = (const char *)inet_ntop(AF_INET, &sinp->sin_addr, abuf, INET_ADDRSTRLEN);
  34. printf("%2d. IP=%s\n", i, addr);
  35. }
  36. }

將以上代碼保存在名為getip.c的文件中,然後使用命令 gcc getip.c -o getip。

如果系統中沒有gcc編譯程序,可執行sudo apt-get install gcc來安裝。

Copyright © Linux教程網 All Rights Reserved