Rendre la fonction send bloquante

cs_sivaller Messages postés 9 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 28 juillet 2010 - 10 sept. 2008 à 18:25
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 12 sept. 2008 à 18:33
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

cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
10 sept. 2008 à 19:27
Salut,

Pourquoi tu utilises WSAAsyncSelect si tu veux faire des operations bloquantes ?
0
cs_sivaller Messages postés 9 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 28 juillet 2010
11 sept. 2008 à 19:04
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.
0
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
11 sept. 2008 à 19:16
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 ?
0
cs_sivaller Messages postés 9 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 28 juillet 2010
12 sept. 2008 à 17:35
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
12 sept. 2008 à 18:33
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.
0
Rejoignez-nous