C++ getaddrinfo()再次与EAI\u连续失败
在我的代码中,我使用的代码如下C++ getaddrinfo()再次与EAI\u连续失败,c++,network-programming,getaddrinfo,C++,Network Programming,Getaddrinfo,在我的代码中,我使用的代码如下 do { r = getaddrinfo(host, service, &hints, ret); } while (r == EAI_AGAIN); 当测试getaddrinfo()连续失败时,循环不会正确终止 你认为有什么办法可以改进代码吗?我们可以使用计数器来计算它应该循环的次数吗 另外,请让我知道getaddrinfo()调用返回“EAI_”的所有原因。无可否认,这里有一个猜测 我们也在一个动力不足的单核嵌入式系统上看到了这一点 我假设(
do
{
r = getaddrinfo(host, service, &hints, ret);
}
while (r == EAI_AGAIN);
当测试getaddrinfo()连续失败时,循环不会正确终止
你认为有什么办法可以改进代码吗?我们可以使用计数器来计算它应该循环的次数吗
另外,请让我知道getaddrinfo()调用返回“EAI_”的所有原因。无可否认,这里有一个猜测 我们也在一个动力不足的单核嵌入式系统上看到了这一点 我假设(在我们的例子中是dnsmasq)是在一个单独的进程中运行的,不管出于什么原因(可能是因为我们在绕圈子追尾巴),它没有足够的资源(cpu/ram/…)来完成它的工作 对解决方案的一个粗略猜测可能是将睡眠放入这个紧密的循环中,让DNS缓存在其工作所需的资源上发挥魔力
我会让您知道它是否有效。错误意味着:名称解析出现临时故障。我们不可能知道你为什么会这样。我们对你传递的参数一无所知。在忙循环中调用此函数不太可能产生结果。这很可能意味着某些DNS服务器无法访问/关闭或您的DNS配置错误。