Comment une procédure peut-elle vérifier continuellement l'état d'un winsock ?
cs_linux21
Messages postés24Date d'inscriptionmercredi 17 janvier 2007StatutMembreDernière intervention19 juin 2007
-
22 mai 2007 à 19:52
cs_linux21
Messages postés24Date d'inscriptionmercredi 17 janvier 2007StatutMembreDernière intervention19 juin 2007
-
22 mai 2007 à 23:27
Bonjour, étant débutant un peu autodidacte en vb6, quelque chose m'echappe complètement et m'handicape.
Prenons un exemple concret si vous le voulez bien.
Je suis en cours de création d'un chat client/serveur. J'utilise un composant winsock. Mon timer suit l'avancé de la connexion du client au serveur et inversement.
J'aimerai maintenant executer une procédure si et seulement si mon composant winsock arrive à l'état 7 (SckConnected). Cela peut vous paraitre basique mais tant mieux, moi ça m'échappe !
Mon idée premiere était bien sur de faire une procédure du style:
If Wserveur.State = 7 Then
(hop je glisse mes procédures)
End if
Mais cette procédure s'execute avec les autres et comme il voit que mon winsock n'est pas en état 7 il passe a autre chose et n'y revient jamais. Comment faire pour qu'il verifie tout le temps ? Un autre timer ? je bloque.. merci de votre aide.
A voir également:
Comment une procédure peut-elle vérifier continuellement l'état d'un winsock ?
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 22 mai 2007 à 20:34
Salut,
Dans un autre langage, une bonne solution aurait été le multi-threading, mais qui est hélas impossible en VB6.
Dans ce cas il te faut alors utiliser l'instruction DoEvents dans une boucle "infinie".
Par exemple tu pourrais imaginer une structure comme ceci :
While Wserveur.State <> 7
DoEvents()
'Opérations à effectuer tant qu'il n'est pas connecté
Wend
'Wserveur.State = 7
Opération à faire lorsqu'il se connecte
DoEvents permet au processus d'exécuter les message windows en attente pour ton application (comme par exemple un click sur un bouton, un déplacement de fenêtre, plein de choses...) et donc de l'empêcher de "freezer" pendant ta boucle.
Sinon l'idée d'utiliser un autre timer ne me semble pas particulièrement mauvaise non plus, à voir.