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. P>
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. P>
implémentation: p> la plupart de ce code a été pris à la meuble et stock de la MSDN site Web, mais tout semble être correct. p> p>
4 Réponses :
C'est le code d'erreur pour l'hôte introuvable. Regarde dans winsock2.h. Recherchez des Microsoft vous dit ici quelles codes d'erreur wsabaseerr + 1001 code> ou
wsahost_not_found code> p>
gettaddrinfo code> renvoie. p>
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 I> 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
@Shocklanced gettaddrinfo () code> n'utilise pas
wsagetlasterror () code> pour signaler les erreurs, il renvoie le code d'erreur réel directement. C'est pourquoi
wsagetlasterror () code> peut renvoyer 0 lorsque
gettaddrinfo () code> retourne non-zéro.
Je viens de courir dans ce problème aussi ... 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. p>
Mon hypothèse est que gettaddrinfo code> et
gethostbyname code> échoue avec une erreur 11001, mais ping / nslookup fonctionnent pour les mêmes noms d'hôtes . P>
gethostbyname code> ou
gettaddrinfo code> échoue si vous avez des symboles et débogèrent l'application. P>
(à une supposition, c'est gethostbyname () code> retournera toujours
wsahost_not_found code> (0x11001) Si votre bloc d'environnement est vide ou manquant
Systemroot code>. p>
wsastartup () code> qui l'exige en réalité, mais échoue silencieusement.) p>
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);
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 code>?
@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?