Linux上使用C语言编写获取某个域名IP地址的程序
Linux下使用C语言编写获取某个域名IP地址的程序
根据《UNIX环境高级编程(第二版)》的相关章节的描述,编写了这个程序,以验证对所学知识的理解是否正确。
/* * 获取某个域名的ip地址,以列表形式打印。 * * 作者: nswish * 2012-01-30 * * 在如下环境编译通过: * Kubuntu 11.1 * gcc version 4.6.1 */ #include <stdio.h> #include <netdb.h> #include <stdlib.h> main(int argc, char *argv[]){ struct addrinfo * res, *pt; struct sockaddr_in *sinp; const char *addr; char abuf[INET_ADDRSTRLEN]; int succ=0,i=0; if(argc == 1) { printf("USAGE: getip <server name>\nFor example:\n getip www.google.com\n"); exit(1); } succ = getaddrinfo(argv[1], NULL, NULL, &res); if(succ != 0) { printf("Can't get address info! error code = %d", succ); exit(succ); } for(pt=res, i=0; pt != NULL; pt=pt->ai_next, i++){ sinp = (struct sockaddr_in *)pt->ai_addr; addr = (const char *)inet_ntop(AF_INET, &sinp->sin_addr, abuf, INET_ADDRSTRLEN); printf("%2d. IP=%s\n", i, addr); } }
将以上代码保存在名为getip.c的文件中,然后使用命令 gcc getip.c -o getip。
如果系统中没有gcc编译程序,可执行sudo apt-get install gcc来安装。