8
votes

11001 retourné sur tous les appels à GettaDdrinfo ()

avoir un problème de connexion à un périphérique sur mon réseau. Chaque fois que j'appelle gettaddrinfo (), il renvoie 11001. J'en ai vérifié avec de nombreuses IP différentes dans la chaîne IP_Address (Global Var). J'ai vérifié tous les numéros de non-travail avec nslookup et y existent le plus.

gettaddrinfo-retournements-toujours-11001-hôte-non trouvé Semble poser une question similaire, mais il n'y a pas de réponse là-bas.

Pour le moment, mon code n'essaie même pas de se connecter au périphérique distant, essayant simplement de résoudre une adresse IP. Une fois que cela fonctionne, je peux passer à des problèmes plus gros et messier.

implémentation: xxx

la plupart de ce code a été pris à la meuble et stock de la MSDN site Web, mais tout semble être correct.


4 commentaires

IP_Address a été définitivement défini sur: Server (nom de serveur local) 192.168.1.1 (IP du serveur) 127.0.0.1 192.168.1.66 (IP de périphérique) 192.168.1.120 (mon PC)


Est-ce que cela fonctionne si vous lui donnez un nom d'hôte, comme localhost ?


@ROMKYNS, non, il retourne toujours 11001, je l'ai testé avec le nom du serveur local et le localhost


J'ai exactement le même problème. Toute résolution à ce sujet?


4 Réponses :


3
votes

C'est le code d'erreur pour l'hôte introuvable. Regarde dans winsock2.h. Recherchez des wsabaseerr + 1001 ou wsahost_not_found

Microsoft vous dit ici quelles codes d'erreur gettaddrinfo renvoie.


6 commentaires

Programmation des systèmes 101: Lisez la documentation et prenez une minute pour gérer explicitement et signaler tous les codes de retour autorisés.


La jonque de MS manque un fil-coffre-fort gai_streurror. Mieux vaut utiliser WSageTlasterRor et FormatMessage. Ou rouler le vôtre que j'ai fait à quelques reprises, car il y a, dans la fosse sans fin qui est Winsock [2], certains cas où fournit le formatMessage n'a pas de sens dans le contexte. Si je pense à un exemple de cela bientôt, je vais mettre à jour ...


Salut les gars, mon code traite l'erreur reçue et je sais ce que signifie l'erreur, mais sa culture dans des circonstances dans les cas où l'adresse est connue et se résout via nslookup, ou une chaîne numérique contenant l'adresse IP est transmise et Cette adresse existe sur le réseau. Edit Je vais essayer ce wrapper WsageTlasterRor et vous permettra de savoir comment ça se passe!


Bonjour à tous, j'ai essayé d'utiliser WsagetlasterRor () pour voir s'il y a une erreur non détectée dans la fabrication de l'appel GettaDdrinfo, mais cela revient simplement 0. Autant que je puisse dire que l'appel GettaDdrinfo est incapable de résoudre l'adresse quel que soit le format. Des idées sur la raison pour laquelle cela se produirait?


Qu'est-ce qui est dans \ System32 \ Drivers \ etc \ hosts?


@Shocklanced gettaddrinfo () n'utilise pas wsagetlasterror () pour signaler les erreurs, il renvoie le code d'erreur réel directement. C'est pourquoi wsagetlasterror () peut renvoyer 0 lorsque gettaddrinfo () retourne non-zéro.



1
votes

Je viens de courir dans ce problème aussi ... gettaddrinfo et gethostbyname échoue avec une erreur 11001, mais ping / nslookup fonctionnent pour les mêmes noms d'hôtes .

s'avère que j'avais utilisé le serveur de symboles plus tôt et j'avais des symboles téléchargés pour toutes les DLL Win32 dans le même répertoire que mon exécutable. Supprimer tous les annuaires .pdb corrigé mon problème.

Mon hypothèse est que gethostbyname ou gettaddrinfo échoue si vous avez des symboles et débogèrent l'application.


0 commentaires

0
votes

gethostbyname () retournera toujours wsahost_not_found (0x11001) Si votre bloc d'environnement est vide ou manquant Systemroot .

(à une supposition, c'est wsastartup () qui l'exige en réalité, mais échoue silencieusement.)


0 commentaires

0
votes

libhttp J'utilise gettaddrinfo code>. Utilisez le succès de cette façon, vous pouvez en apprendre davantage de libhttp.in mon appel de programme, utilisez-le OK à l'exception du proxy ou non du supplot IPv6 .Example appelle Func tels que: Xx_httplib_inet_pton (AF_INET, "127.0.0.1", & SA-> SIN, TAILLEOF (SA-> SIN)) P>

   int eno=  WSAGetLastError();
 char erbuf[40]; 
  FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ARGUMENT_ARRAY,
  NULL,eno,0,erbuf,sizeof(erbuf),NULL);OutputDebugStringA(erbuf);


0 commentaires