Y a-t-il une raison pour qu'un appel de blocage à la fonction send() de winsock sur Vista soit renvoyé immédiatement? Cela fonctionne avec le délai prévu sur XP et ci-dessous. Je me demande si cela a quelque chose à voir avec la fonction d'auto-réglage de Vista. code:Y a-t-il une raison pour qu'un appel de blocage à la fonction sendock de winsock sur Vista soit renvoyé immédiatement?
char *pBuffer; // pointer to data
int bytes; // total size
int i = 0, j=0;
while (i < bytes)
{
j = send(m_sock, pBuffer+i, bytes-i, 0);
i+=j;
}
Merci,
Pavan
Lorsque vous dites "revenir immédiatement", voulez-vous dire sans que l'envoi se produise? La mise en mémoire tampon du noyau de l'envoi reviendrait "très vite", ce qui est différent de "immédiat". – msw
Les indications d'erreur qui ne sont pas vérifiées (par exemple, mauvais m_sock) retourneraient également très rapidement. – msw
Vous ne vérifiez pas les codes d'erreur, n'est-ce pas? En vérifiant que send envoie réellement toutes les données (envoyer est autorisé à diviser les données en plus petits morceaux, donc vous devrez peut-être l'appeler à plusieurs reprises) et sinon, vérifier SOCKET_ERROR et obtenir l'erreur pourrait jeter plus de lumière sur cela. –