gpt4 book ai didi

linux - 在 Linux 上以编程方式检索 IPv6 DNS 服务器列表

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:15 26 4
gpt4 key购买 nike

我正在尝试以编程方式检索 IPv6 DNS 服务器列表。目前我正在使用 libresolv 和下一个代码:

#include <stdio.h>
#include <netinet/in.h>
#include <resolv.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char** argv)
{
res_state res = malloc(sizeof(struct __res_state));
res_ninit(res);

printf("%p\n", res->_u._ext.nsaddrs[0]); // (nil) here
}

根据 resolv.h,res->_u._ext.nsaddrs 字段应包含一个包含所需地址的“struct sockaddr_in6 *”数组,但它包含一个 NULL 数组。

IPv4 DNS 服务器列表可通过 res->nsaddr_list 字段访问,但 IPv6 列表始终为空。我已经用 Ubuntu 和 CentOS 检查过这个。 IPv6 配置正确。

最佳答案

您的代码似乎是正确的。很可能 res_ninit() 没有将任何 IPv6 DNS 服务器放入 struct res_state 中,因为您的系统不知道任何内容。

尝试将以下行放入您的/etc/resolv.conf:

nameserver 2001:4860:4860::8844

关于linux - 在 Linux 上以编程方式检索 IPv6 DNS 服务器列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41442913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com