J'appelle ConnecTex () code> méthode. Il renvoie une fausse valeur, donc je vérifie le code d'erreur avec wsagetlasterror code> appel. Parfois, cela arrive que la valeur de retour est zéro. Qu'est-ce que cela signifie? P>
3 Réponses :
Il n'y a pas de code d'erreur Winsock avec la valeur 0, c'est donc ma meilleure hypothèse que vous n'avez pas appelé wsastartup. p>
Le wsagetlasterror doit être immédiatement appelé lorsqu'une erreur se produit. Certaines fonctions peuvent réinitialiser le dernier code d'erreur étendu à 0 p>
Plus d'infos à MSDN . p>
La fonction RCV Winsock peut renvoyer une erreur (Socket_Error), puis même si le prochain appel est à WsageTlasterRor, cela peut toujours renvoyer un 0 comme code d'erreur. P>
i J'ai d'abord trouvé ce "bogue" lors de la mise sous tension du mode de débogage en mode de sortie. Mon code a fonctionné bien lors du débogage mais déconnecterait les clients lors du mode de libération. P>
La raison en est que le tampon de réception n'était pas assez grand. Mais cela n'est documenté nulle part. Dans mon mode de libération de cas, il suffisamment rapidement pour déborder le tampon. P>
L'augmentation de la taille de la mémoire tampon résoudra le problème (le 3ème paramètre de RECV. P>
J'espère que cette aide. bonne chance p>