【发布时间】:2011-06-18 18:20:56
【问题描述】:
这是我到目前为止所做的。它可以编译,但是当我尝试运行它时会出现段错误。
#include <iostream>
#include <netdb.h>
#include <arpa/inet.h>
#include <ares.h>
void dns_callback (void* arg, int status, int timeouts, struct hostent* host)
{
std::cout << host->h_name << "\n";
}
int main(int argc, char **argv)
{
struct in_addr ip;
char *arg;
inet_aton(argv[1], &ip);
ares_channel channel;
ares_gethostbyaddr(channel, &ip, 4, AF_INET, dns_callback, arg);
sleep(15);
return 0;
}
【问题讨论】:
-
为什么
ares_gethostbyaddr()中的地址长度使用4而不是sizeof(in_addr)? -
哦。我检查了一个使用这个库的程序,他们使用了 4,所以我认为它没问题。我将其更改为 sizeof(ip) 但它仍然存在段错误。
-
另外,您的示例输入是什么?你能通过 gdb 运行它,看看它到底在哪里崩溃了吗?