OVH Cloud OVH Cloud

WSA et les asynchrone

10 réponses
Avatar
poppyto
Bonjour à tous, j'ai un petit problèmes avec les sockets...

En fait j'aimerai faire un envoi et une réception en asynchrone sur une adresse
IP en protocole TCP/IP.
Jusque là, ça va (quoique..:oP )

En gros tout marche bien lorsque je fais ça en mode synchrone, avec un send et
un recv...

Ensuite quand je passe en mode asynchrone, (avec WSACreateEvent,
WSAWaitForMultipleObjects et WSAGetOverlappedResult (Bref comme si c'étaot un
port de Com quoi) ), l'envoi(WSASend) marche bien mais ça bloque en
réception(WSARecv) sur le WSAWaitForMultipleObjects (après annonce d'un
IO_PENDING)....

Bon je sais pas où je m'y prend mal...je demande bien la gestion asynchrone du
socket, le connect marche bien, l'envoi aussi....alors pourquoi ça bloque ?

Help me please, où si vous avez un exemple concrès sans me rediriger ver
CAsyncSocket , je veux bien prendre :o)

Je vous remercie d'avance pour votre aide
Cordialement, Stef++

10 réponses

Avatar
Vincent Burel
"poppyto" wrote in message
news:
Bonjour à tous, j'ai un petit problèmes avec les sockets...

En fait j'aimerai faire un envoi et une réception en asynchrone sur une


adresse
IP en protocole TCP/IP.
Jusque là, ça va (quoique..:oP )

En gros tout marche bien lorsque je fais ça en mode synchrone, avec un


send et
un recv...

Ensuite quand je passe en mode asynchrone, (avec WSACreateEvent,
WSAWaitForMultipleObjects et WSAGetOverlappedResult (Bref comme si c'étaot


un
port de Com quoi) ), l'envoi(WSASend) marche bien mais ça bloque en
réception(WSARecv) sur le WSAWaitForMultipleObjects (après annonce d'un
IO_PENDING)....

Bon je sais pas où je m'y prend mal...je demande bien la gestion


asynchrone du
socket, le connect marche bien, l'envoi aussi....alors pourquoi ça bloque


?

Help me please, où si vous avez un exemple concrès sans me rediriger ver
CAsyncSocket , je veux bien prendre :o)



Pour ce genre de communication (même avec le port COM d'ailleurs) le mieux
c'est de faire une boucle de SEND/RECV dans un thread à part (un THREAD
SERVICE comme on dit). Cela vous permet d'une part d'utiliser les fonction
de bases , et d'autre part cela vous permet de controller parfaitement ce
qui se passe. Vous pouvez mettre en place un jeux de callback propriétaire
si vous voulez , vous pour pouvez gérer votre flux de donnée comme vous
voulez.

Pour répondre à votre question il faut savoir que même si vous créez un
socket avec le flag WSA_FLAG_OVERLAPPED, cela n'a pas réellement d'influence
sur l'aspect non-bloquant de vos fonction de communication.

Notons enfin que WSAWaitForMultipleObjects est une fonction qui est
bloquante si l'EVENT n'est pas signalé. Microsoft dit qu'il faut "poller "
avec WSAGetOverlappedResult pour éviter les blocages. Mais faire un
"polling" sous Windows n'est pas une méthode super appréciée généralement
:-)

Vincent Burel
Avatar
adebaene
"Vincent Burel" wrote in message news:<bku3kk$695$...

Pour ce genre de communication (même avec le port COM d'ailleurs) le mieux
c'est de faire une boucle de SEND/RECV dans un thread à part (un THREAD
SERVICE comme on dit).


Et comment tu fais pour arrêter (proprement) ton thread de service,
s'il est bloqué sur un recv ?

Arnaud
Avatar
adebaene
(poppyto) wrote in message news:...
Bonjour à tous, j'ai un petit problèmes avec les sockets...

En fait j'aimerai faire un envoi et une réception en asynchrone sur une adresse
IP en protocole TCP/IP.
Jusque là, ça va (quoique..:oP )

En gros tout marche bien lorsque je fais ça en mode synchrone, avec un send et
un recv...

Ensuite quand je passe en mode asynchrone, (avec WSACreateEvent,
WSAWaitForMultipleObjects et WSAGetOverlappedResult (Bref comme si c'étaot un
port de Com quoi) ), l'envoi(WSASend) marche bien mais ça bloque en
réception(WSARecv) sur le WSAWaitForMultipleObjects (après annonce d'un
IO_PENDING)....

Bon je sais pas où je m'y prend mal...je demande bien la gestion asynchrone du
socket, le connect marche bien, l'envoi aussi....alors pourquoi ça bloque ?



Il faudrait qu'on voit ton code pour pouvoir t'aider sérieusement.
Quand tu fais ton send en asynchrone, l'événement associé est bien
levé lorsque les données on été transmises?


Arnaud
Avatar
Vincent Burel
"Arnaud Debaene" wrote in message
news:
"Vincent Burel" wrote in message


news:<bku3kk$695$...
>
> Pour ce genre de communication (même avec le port COM d'ailleurs) le


mieux
> c'est de faire une boucle de SEND/RECV dans un thread à part (un THREAD
> SERVICE comme on dit).
Et comment tu fais pour arrêter (proprement) ton thread de service,
s'il est bloqué sur un recv ?



Et bien d'abord on peut mettre en place un TimeOut qui débloque le recieve
quand il n'y rien.
Et puis ensuite on peut vérifier avant d'appeler ce recieve qu'effectivement
y'a qqc à recevoir (voir fonction select).

Donc je ne vois pas tellement le problème pour arréter PROPREMENT ce thread.
Votre question serait plus légitime sur le thread qui s'occupe d'ACCEPTER
les connections ... quand on est censé supporter plusieurs interlocuteurs
bien sur...

A+
Vincent Burel

PS : merci de ne pas me tutoyer, d'une part parce que je vous connais pas,
ensuite parce qu'étant donné votre ton, le tutoiement vous fait passer pour
un gougeat de premier ordre. Ce que, sans doute vous n'êtes pas du tout. :-)
Avatar
Ambassadeur Kosh
> PS : merci de ne pas me tutoyer, d'une part parce que je vous connais pas,



ensuite parce qu'étant donné votre ton, le tutoiement vous fait passer


pour
un gougeat de premier ordre. Ce que, sans doute vous n'êtes pas du tout.


:-)


peut être qu'apres N threads d'agressions de votre part envers sa personne,
peut il pratiquer le tutoiement librement, vous ne croyez pas :)

pour conclure, si vous n'y voyez bien entendu pas d'objections, Meuuusieur
Burel le bien instruit aux bonnes manieres, je dirais que "autant un troll a
un côté sympa, autant un conflit de personnes c'est chiant".

voila.
Avatar
Michaël Monerau
Vincent Burel wrote:
PS : merci de ne pas me tutoyer, d'une part parce que je vous connais
pas, ensuite parce qu'étant donné votre ton, le tutoiement vous fait
passer pour un gougeat de premier ordre. Ce que, sans doute vous
n'êtes pas du tout. :-)



C'est tellement plus pratique de se tutoyer... Arrêtons la fausse politesse.
Déjà, 'vous' est plus long, et en plus, ça enlève un côté convivial certain.

bonne soirée Monsieur Burel.
--
<=- Michaël "Cortex" Monerau -=>
Avatar
Vincent Burel
"Ambassadeur Kosh" wrote in message
news:bkunnp$s35$
> PS : merci de ne pas me tutoyer, d'une part parce que je vous connais


pas,

> ensuite parce qu'étant donné votre ton, le tutoiement vous fait passer
pour
> un gougeat de premier ordre. Ce que, sans doute vous n'êtes pas du tout.
:-)


peut être qu'apres N threads d'agressions de votre part envers sa


personne,
peut il pratiquer le tutoiement librement, vous ne croyez pas :)



Manifestement non. Et si j'ai pu chahuté Mr Debaene, c'est qui le méritait !
(La preuve est que je ne chahute pas tout le monde, alors pourquoi lui ?)

pour conclure, si vous n'y voyez bien entendu pas d'objections, Meuuusieur
Burel le bien instruit aux bonnes manieres, je dirais que "autant un troll


a
un côté sympa, autant un conflit de personnes c'est chiant".



Je ne vois aucun conflit de personne, je vois une entité uni-cellulaire me
parler avec mépris sur internet et essayant de décrédébiliser ma réponse et
de mettre en doute mon sérieux, alors je fais un rappel à l'ordre c'est
tout.

Vincent Burel
Avatar
Vincent Burel wrote:
PS : merci de ne pas me tutoyer, d'une part parce que je vous connais
pas, ensuite parce qu'étant donné votre ton, le tutoiement vous fait
passer pour un gougeat de premier ordre. Ce que, sans doute vous
n'êtes pas du tout. :-)



Vincent, t'es lourd.

--
Quentin Pouplard (Tene/MyOE)
http://www.myoe.org | http://graff.alrj.org
Avatar
Vincent Burel wrote:
> pour conclure, si vous n'y voyez bien entendu pas d'objections,
> Meuuusieur Burel le bien instruit aux bonnes manieres, je dirais que
> "autant un troll a un côté sympa, autant un conflit de personnes
> c'est chiant".

Je ne vois aucun conflit de personne, je vois une entité
uni-cellulaire me parler avec mépris sur internet et essayant de
décrédébiliser ma réponse et de mettre en doute mon sérieux, alors je
fais un rappel à l'ordre c'est tout.



Toi, t'as pas peur du ridicule...


--
Quentin Pouplard (Tene/MyOE)
http://www.myoe.org | http://graff.alrj.org
Avatar
Vincent Burel
wrote in message
news:


Vincent Burel wrote:
> > pour conclure, si vous n'y voyez bien entendu pas d'objections,
> > Meuuusieur Burel le bien instruit aux bonnes manieres, je dirais que
> > "autant un troll a un côté sympa, autant un conflit de personnes
> > c'est chiant".
>
> Je ne vois aucun conflit de personne, je vois une entité
> uni-cellulaire me parler avec mépris sur internet et essayant de
> décrédébiliser ma réponse et de mettre en doute mon sérieux, alors je
> fais un rappel à l'ordre c'est tout.

Toi, t'as pas peur du ridicule...



on peut le dire :-)

VB