使用 getaddrinfo 缓存 DNS

Posted

技术标签:

【中文标题】使用 getaddrinfo 缓存 DNS【英文标题】:Caching DNS using getaddrinfo 【发布时间】:2012-07-27 18:41:08 【问题描述】:

我正在使用系统调用 getaddrinfo() 从 DNS 获取 IP 地址。

我想知道缓存信息是否存储在Linux上?

如果存储了缓存信息,是否可以清除缓存信息?

我想知道如何清除缓存信息。

谢谢。

【问题讨论】:

【参考方案1】:

一般来说,不,glibc 解析器不会缓存getaddrinfo 结果。

在运行nscd 的系统上,某些名称可能会被缓存。 (至少,gethostbyname 可能会通过缓存;我不确定getaddrinfo。)重新启动守护程序以清除缓存。

通常预计上游(可能是递归的)DNS 解析器正在执行缓存。在大多数情况下,这是您无法控制的。

【讨论】:

以上是关于使用 getaddrinfo 缓存 DNS的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 getaddrinfo()?

C++ - getaddrinfo() - 使用动态 dns 获取自己的外部 IP 失败

带有 systemd 的 getaddrinfo() API

如何在 Windows 上使用 getaddrinfo()

运用 getaddrinfo()函数的简单服务器实现

iPhone中的getaddrinfo