2010-12-14 33 views
-1

Dans mon application C++ j'utilise getnameinfo et il renvoie EAI_AGAIN - Quelle est l'origine de cette erreur?Appel système Linux getname info return 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 
} 
+0

mais qu'est-ce qui peut le causer? mon application ne peut pas attendre! – gln

Répondre

2

Selon getnameinfo:

[EAI_AGAIN] Le nom n'a pas pu être résolu à ce moment. Les tentatives futures peuvent réussir.

La raison la plus probable serait une sorte de délai d'attente pendant la recherche DNS.

+0

Alors, que puis-je faire pour le réparer? – gln

+0

Les futures tentatives n'ont pas abouti – gln

+0

Vous devez juste vivre avec la possibilité que les recherches DNS échouent. – cmeerw