域名解析

#include<stdio.h>
#include<netdb.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>

int main(int argc,char **argv)
{
    char **pptr;
    char str[46];
    struct hostent *hptr;
    if(argc < 2)
    {   
        fprintf(stderr,"usage:domain <domain>\n");
        return -1; 
    }   
    if((hptr = gethostbyname(argv[1])) == NULL)
    {   
        fprintf(stderr,"gethostbyname call failed.%s\n",hstrerror(h_errno));
        return -1; 
    }   
    printf("offical name: %s\n",hptr->h_name);
    for(pptr = hptr->h_aliases;*pptr != NULL;pptr++)
    {   
        fprintf(stderr,"Invalid address type %d\n",hptr->h_addrtype);
        return -1; 
    }   
    pptr = hptr->h_addr_list;
    for(;*pptr != NULL;pptr++)
    {   
        printf("\t address:%s\n", inet_ntop(hptr->h_addrtype,*pptr,str,sizeof(str)));    
    }   
    return 0;
}


域名解析程序

 

#include<netdb.h>

struct hostent

{

  char *h_name;//主机名

  char *h_aliases;//主机的别名列表

  int h_addrtype;//主机地址族的类型,AF_INET或AF_INET6

  int h_length; //返回地址的长度,如果返回的是IPv4地址,这个长度是4。

  char **h_addr_list;//返回主机的地址列表,以网络字节序存储。

};

#define h_addr h_addr_list[0]

struct hostent *gethostbyname(const char *hostname);

/*根据/etc/resolv.conf或/etc/hosts,参数hostname是一个包含主机域名的字符串(www.google.cn)或包含IPv4地址的字符串(“192.168.2.1”)成功执行将返回非空的hostent结构地址,失败则返回空指针,并用错误码设置全局变量h_errno,可以通过调用hstrerror()并传递h_errno作为参数取得错误描述信息。*/

extern int h_errno;

char *hstrerror(int err);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值