Rendre la fonction send bloquante

Signaler
Messages postés
9
Date d'inscription
dimanche 24 août 2003
Statut
Membre
Dernière intervention
28 juillet 2010
-
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
-
Bonjour,

Quand j'envoie des données , je reçoit l'erreur 10035 , car la pile TCP est pleine.
Elle n'est pas bloquante.

Comment peux t'on faire pour rendre la fonction Send bloquante ?
Attendre que l'événement FD_WRITE soit intercepté , mais c'est un peu
compliqué.

J'ai implementer le WSAAsyncSelect(wparam, hwnd, WM_USER+2, FD_ACCEPT|FD_CONNECT|FD_READ | FD_WRITE | FD_CLOSE);

mais rien n'y fait le socket n'est toujours pas bloquante

Merci




Sivaller - Cewod Bewod emulateur 80186 + X.M Lanceur de systéme DOS

5 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Salut,

Pourquoi tu utilises WSAAsyncSelect si tu veux faire des operations bloquantes ?
Messages postés
9
Date d'inscription
dimanche 24 août 2003
Statut
Membre
Dernière intervention
28 juillet 2010

IOCP , on m'a dit que qu'il avait un bug. Moi pas trouver de bug.

Mais comment rendre le socket bloquante sur l'envoie de donnée aprés appel de la fonction WSAAsyncSelect(wparam, hwnd, WM_USER+2, FD_ACCEPT|FD_CONNECT|FD_READ | FD_WRITE | FD_CLOSE);

Merci.
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
tu n'a pas répondus a ma question.

pourquoi appeler WSAAsyncSelect, qui sert a rendre un socket non bloquant, si tu souhaites faire des opérations bloquantes ?
Messages postés
9
Date d'inscription
dimanche 24 août 2003
Statut
Membre
Dernière intervention
28 juillet 2010

WSAAsyncSelect est fiable,
Gérer les reception de donnée par FD_READ et les connexion FD_ACCEPT est plus fiable que IOCP,
et je voulais intercepter l'événement de déconnexion FD_CLOSE.

WsaAsyncSelect rend le socket asynchrone , mais exceptionnellement je souhaiterai le rendre bloquante pour l'envoie de donnée, car attendre l'évenement FD_WRITE c'est un peu compliqué.

Merci

Sivaller - Cewod Bewod emulateur 80186 + X.M Lanceur de systéme DOS
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Si tu utilises WSAAsyncSelect pour les autres notifications, alors tu
va etre obligé de gerer FD_WRITE si tu veux envoyer des données
correctement, on ne peut pas faire autrement a ma connaissance.

Je sais pas ou tu as vu que WSAAsyncSelect etait plus fiable qu'un
completion port, mais c'est faux. Socket asynchrones ou socket
overlapped, c'est purement une question de choix, les deux techniques
ont leur avantages et leurs inconvenients.