【问题标题】:Linux system call getname info return EAI_AGAINLinux 系统调用 getname info 返回 EAI_AGAIN
【发布时间】:2010-12-14 10:25:10
【问题描述】:

在我的 C++ 应用程序中,我使用 getnameinfo 并返回 EAI_AGAIN - 是什么导致了这个错误?

struct sockaddr_storage ss;
socklen_t salen = sizeof(ss);
struct sockaddr *sa;
struct addrinfo hints, *paddr, *paddrp;

sa = (struct sockaddr *)&ss;

if (getpeername(sock, sa, &salen) != 0) {
    error = errno;
    return -1;
}

char hbuf[NI_MAXHOST];
char pbuf[NI_MAXSERV];
if (0 != (error = getnameinfo(sa, salen,
                  hbuf, sizeof(hbuf),
                  pbuf, sizeof(pbuf),
                  0))) {
    return -1;//here it returns, the error is -3=EAI_AGAIN
}

【问题讨论】:

  • 但是什么会导致它呢?我的申请等不及了!

标签: c++ linux system-calls


【解决方案1】:

根据getnameinfo:

[EAI_AGAIN] 目前无法解析名称。未来的尝试可能会成功。

最可能的原因是在 DNS 查找期间出现某种超时。

【讨论】:

  • 那么我该怎么做才能修复它?
  • 未来尝试未成功
  • 您只需要忍受 DNS 查找失败的可能性。
  • 请注意。是的,DNS 查找可能会失败,并且将返回 EAI_AGAIN。但是,当此调用连续返回 EAI_AGAIN 时,即使从命令行进行查找并且重新启动服务修复了它,这表明另一个问题。
猜你喜欢
  • 2012-02-11
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
  • 2014-01-23
  • 2012-08-20
  • 2012-06-30
  • 1970-01-01
相关资源
最近更新 更多