查询C中的A记录

时间:2011-02-12 17:42:02

标签: c++ c dns

我正在研究一些使用libresolv检查DNS记录的代码 我首先用res_query执行查询并且成功,但是如果我正在检查'A'记录,dn_expand将不会给我IP地址(我不认为我真的应该这样做)。但是,我还没能找到一个能解码来自rr的IP地址的函数 我怎样才能获得IP? 如果需要,我可以发布一些代码。

1 个答案:

答案 0 :(得分:1)

执行此操作的方法是从rr获取rdata(使用res_rr_rdata(rr)),并通过inet_ntop运行。

对于A记录,这就是我的结果:

if (ns_parserr(&msg, ns_s_an, rrnum, &rr)) {
        printf("ns_parserr: %s\n", strerror(errno));
}
if(ns_rr_type(rr) == ns_t_cname){
        printf("Found cname\n");
}
inet_ntop(AF_INET, ns_rr_rdata(rr), decodedBuffer, NS_MAXDNAME);

decodeBuffer以ip结束。显然,对于AAAA,请使用AF_INET6