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来安装。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值