2010-11-11 5 views
0

J'ai un programme (écrit en C) qui utilise getaddrinfo() et son premier paramètre est le nom d'hôte que je veux pour obtenir des informations d'adresse, disons que c'est "domaine". Dans mon fichier /etc/hosts sur la même machine, je peux voir que "domaine" est censé se résoudre à 192.168.1.200. Lorsque j'exécute le programme, il se bloque à chaque appel et ne peut pas obtenir les informations d'adresse. Toutefois, si je remplace "domaine" par l'adresse IP réelle, cela fonctionne très bien. D'ailleurs, ce problème n'existait pas il y a une semaine ou deux, c'est un nouveau problème qui a soudainement augmenté sa tête laide. Je suis à peu près certain que quelque chose a dû être fait à cette machine la semaine dernière, et j'ai essayé de vérifier cela avec nos autres employés, mais ils ne savent pas non plus pourquoi cela se produirait. Donc, ma question est: est-ce que quelqu'un a une idée de ce qui se passerait soudainement? Que puis-je vérifier pour vérifier qu'il est configuré comme il se doit? Merci d'avance.C getaddrinfo() ne résout pas le nom

+0

Vous ne pouvez pas poster un échantillon de code? –

+0

Les outils de ligne de commande tels que ping peuvent-ils résoudre correctement les mêmes noms? – SimonJ

Répondre

1

Utilisez-vous Linux? Ma conjecture est que vous avez foiré quelque chose avec le libnss messieurs glibc utilise pour router toutes ses recherches de nom (noms d'hôte, noms d'utilisateur, noms de groupe, etc.), peut-être par une mise à niveau glibc bâclée. Essayez d'exécuter votre programme avec strace et de voir si il essaie (et échoue) d'ouvrir les fichiers libnss_*. Regardez également /etc/nsswitch.conf pour vous assurer que la ligne hosts: indique hosts: files dns. man nsswitch.conf pourrait être utile.

+0

Oui désolé, nous utilisons Linux (Gentoo) et il est peut-être un problème de mise à niveau glibc bâclé, je vais regarder dans ce domaine. Je vous remercie. – LebowskiT1000

+0

Il s'avère que je faisais une grande supposition DOH! J'ai écrit un petit programme en utilisant la fonction en question et j'ai travaillé sans problème! Après un peu plus de recherche et de débogage, j'ai trouvé que c'était un problème avec les données qu'il récupérait à partir de la connexion socket que je faisais. Désolé pour le problème, mais merci pour l'aide. – LebowskiT1000

Questions connexes