任何人都可以告诉我如何在android(ndk-build)中构建C-ares库
这就是我到目前为止所做的.它编译,但当我尝试运行它时会出现段错误.
#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;
}
Run Code Online (Sandbox Code Playgroud) c-ares支持IOS吗?我需要在IOS上运行的公司应用程序中使用c-ares.但是使用"ares_gethostbyname()"无法正常工作,并且回调函数中的状态代码始终返回11(ARES_ECONNREFUSED).相同的代码在其他opearting系统(如Win32,Android)上正确运行.
浏览源代码,我找到了原因,就是c-ares无法在IOS上获取dns服务器.因为c-ares读取文件/etc/resolv.conf以获取dns服务器信息,但IOS上不存在此文件.
那么,c-ares是否支持IOS?或者IOS获取dns服务器信息的方法是什么?
我想启用curl的AsynchDNS(在phpinfo()中找到)。我必须做什么?这是截图:

c-ares is a C library that performs DNS requests and name resolves asynchronously
Run Code Online (Sandbox Code Playgroud)
http://curl.haxx.se/dev/readme-ares.html 但我仍然坚持在curl上安装如何存在。
我正在使用c-ares进行DNS查询.问题是,我不知道如何获得NS值.我没有找到任何示例和文档不适合我:(
ares_parse_ns_reply的手册页仅提供功能描述.我已经创建了我的频道并弄清楚如何进行gethostbyname查询:
// ...
status = ares_init_options(&channel, &options, optmask);
if (status != ARES_SUCCESS) {
printf("ares_init_options: %s\n", ares_strerror(status));
return EXIT_FAILURE;
}
// ...
ares_gethostbyname(channel, "stackoverflow.com", AF_INET, callback, NULL);
// ...
Run Code Online (Sandbox Code Playgroud)
但是我接下来要做什么来获得MX/NS/AAAA记录?
我正在尝试将 gRPC 集成到现有项目中。它已经有包含安装的所有 gRPC 依赖项(ssl、c-ares、protobuf 和 zlib)的目录。我想在构建 gRPC 时使用它们,并将 gRPC 安装到同一目录中。我下载了 gRPC 存档(没有克隆位于 grpc/third_party/ 中的子模块),并尝试生成构建系统,用于构建 gRPC 并将其安装到我的目标文件夹中(使用 cmake)。
我使用了以下命令:
cmake -DCMAKE_INSTALL_PREFIX=$PREFIX -DgRPC_ZLIB_PROVIDER=package -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_SSL_PROVIDER=package -DgRPC_CARES_PROVIDER=package
Run Code Online (Sandbox Code Playgroud)
并得到一个错误:
CMake Error at cmake/cares.cmake:34 (find_package):
Could not find a package configuration file provided by "c-ares" with any
of the following names:
c-aresConfig.cmake
c-ares-config.cmake
Add the installation prefix of "c-ares" to CMAKE_PREFIX_PATH or set
"c-ares_DIR" to a directory containing one of the above files. If "c-ares"
provides a separate development package or SDK, be sure …Run Code Online (Sandbox Code Playgroud)