我使用libresolv库创建一个应用程序,该应用程序将命令行参数中的DNS服务器名称和查询主机名称提供给此特定DNS服务器。
_res.nsaddr_list[0].sin_family = AF_INET;
_res.nsaddr_list[0].sin_addr.s_addr = inet_addr(argv[2]);
_res.nsaddr_list[0].sin_port = htons(NS_PORT);
_res.nscount = 1;
res_init ();
l = res_query(argv[1], ns_c_any, ns_t_a, nsbuf, sizeof(nsbuf));
这适用于本地DNS服务器(如果使用)。但是当我尝试传递8.8.8.8(谷歌名称服务器)时,res_query总是返回-1。 我在网上搜索了类似的东西,发现res_init加载了/etc/resolv.conf。我不愿意。我想覆盖resolv.conf并告诉解析器使用用户输入的名称服务器。(谷歌服务器失败)