在我的代码中,我正在使用以下代码。

do
{
    r = getaddrinfo(host, service, &hints, ret);
}
while (r == EAI_AGAIN);


当测试getaddrinfo()连续失败时,循环将无法正确终止。

您是否看到任何改进代码的方法?我们可以使用计数器来计数应该循环的次数吗?

另外,请让我知道getaddrinfo()调用返回“ EAI_AGAIN”的所有原因是什么。

最佳答案

诚然,这是一个疯狂的猜测。

我们还在功率稍低的单核嵌入式系统上看到了这一点。

我假设(在我们的情况下为dnsmasq)在一个单独的进程中运行,并且由于某种原因(可能是因为我们围着尾巴盘旋而行)它没有足够的资源(cpu / ram / ...)来运行做好自己的工作。

一个解决方案的一个疯狂的猜测可能是使这个紧张循环陷入困境,并让DNS缓存神奇地发挥其作用所需的资源。

我会告诉您是否可行。

关于c++ - getaddrinfo()连续失败,并显示EAI_AGAIN,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9379373/

10-11 18:31