Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3098 connectés 

  FORUM HardWare.fr
  Programmation
  API Win32

  WSAEnumNetworkEvents, FD_WRITE et sockets asynchrones

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

WSAEnumNetworkEvents, FD_WRITE et sockets asynchrones

n°1742346
azubal
Posté le 06-06-2008 à 09:31:34  profilanswer
 

Coucou les amis.
 
Je suis en train de bricoler un serveur multiclients sans utiliser de threads.
Je me sers donc de WSAEnumNetworkEvents() et de WSAWaitForMultipleEvents() pour multiplexer mes sockets (non bloquantes).
 
Quand mon serveur reçoit des données d'une socket, il traite la requête puis prépare le buffer qui va être renvoyé. A ce moment là je dois checker si je peux écrire sur ma socket puis envoyer la purée jusqu'à avoir vider mon buffer.
 
Malheureusement FD_WRITE ne se comporte pas comme je veux. Je souhaite que WSAEnumNetworkEvents() retourne avec WSAWaitForMultipleEvents() renvoyant l'event FD_WRITE tant que je peux écrire sur ma socket (comme select()). Comme cela je rajoute l'event FD_WRITE sur ma socket uniquement quand elle à un buffer à envoyer.
Hors il semblerait (d'après la MSDN) que FD_WRITE ne retourne que lors ce que un send() précédent à retourné une erreur "buffer plein" (WSAEWOULDBLOCK) et que ce buffer redevient disponible.
 
Bref, il s'ouvre deux chemins...
- Soit je reprends tout mon code pour utiliser select() à la place mais ca me semble moins adapté et surtout, j'ai un paquet de lignes de code a modifier :(
- Soit je trouve une solution en gardant l'API actuelle, mais là je ne trouve pas de solution. Il me faudrait pouvoir réarmer l'event FD_WRITE après chaque send() (un truc du genre WSASetEvent(myEvent, FD_WRITE); ).
 
 
Toutes vos idées sont les bienvenues.

mood
Publicité
Posté le 06-06-2008 à 09:31:34  profilanswer
 

n°1742509
azubal
Posté le 06-06-2008 à 14:01:05  profilanswer
 

Bon, j'ai utilisé select()


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  API Win32

  WSAEnumNetworkEvents, FD_WRITE et sockets asynchrones

 

Sujets relatifs
[C#] Appeller plusieurs méthodes asynchrones ?Synchroniser 2 programmes (sockets?)
probleme avec sockets : fonctionnement aléatoire[4D] Recherche licence 4D Write 6.7.4
un problème avec les sockets :(Afficher la liste des sockets en cours sous xp
Synchroniser deux BDD distantes (AJAX, sockets, curl & Co.)struts bean:write
Problème avec les sockets !Envoi d'un objet par sockets multicast
Plus de sujets relatifs à : WSAEnumNetworkEvents, FD_WRITE et sockets asynchrones


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR