我正在编写一些使用libresolv检查DNS记录的代码。
我首先用res_query执行查询,查询成功了,但是如果我检查的是'A‘记录,dn_expand不会给我IP地址(我不认为我真的应该期望它)。但是,我还没有找到可以从rr中解码IP地址的函数。
如何获取IP?
我可以发布一些代码,如果需要的话。
发布于 2011-02-13 09:40:16
为此,方法是从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);decodedBuffer最终得到了ip。显然,对于AAAA,请使用AF_INET6
https://stackoverflow.com/questions/4979535
复制相似问题