Help sur WinSock

Signaler
Messages postés
40
Date d'inscription
lundi 7 mai 2001
Statut
Membre
Dernière intervention
12 août 2003
-
Messages postés
40
Date d'inscription
lundi 7 mai 2001
Statut
Membre
Dernière intervention
12 août 2003
-
j'ai un gros problème lors de l'utilisation de WinSock ::
lorsque que l'appel de SendData se fait dans des boucles, le WinSock n'envioe rien, il stocke les valeur, et les envoie seulmenent lors du prochain appel d'un SendData après la fin de la boucle...

très chiant, si quelq'un à une soluce....

10 réponses

Messages postés
235
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
9 novembre 2007

mets voir des doevents dans ta boucle:
0
Messages postés
40
Date d'inscription
lundi 7 mai 2001
Statut
Membre
Dernière intervention
12 août 2003

comment ça?
j'ai une boucle comme ça ::

Function SendEtat()
For i = 0 To Server.Serveur.ubound Step 1
For i2 = 0 To UBound(Pseudo) Step 1
If Etat(i2) = True Then
Server.Serveur(i).SendData "STATEOK " & Pseudo(i2) & "=" & Etat(i2)
AddConsole "Envoie sur " & Server.Serveur(i).RemoteHostIP & ":" & Server.Serveur(i).RemotePort & " via server.serveur(" & i & ") STATEOK " & Pseudo(i2) & "=" & Etat(i2), True
End If
Next i2
Next i
End Function
0
Messages postés
235
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
9 novembre 2007

tu peux faire un truc dans le genre:
Function SendEtat()
For i = 0 To Server.Serveur.ubound Step 1
For i2 = 0 To UBound(Pseudo) Step 1
If Etat(i2) = True Then
DoEvents
Server.Serveur(i).SendData "STATEOK " & Pseudo(i2) & "=" & Etat(i2)
DoEvents
'' mets en plusieurs si nécessaire!
AddConsole "Envoie sur " & Server.Serveur(i).RemoteHostIP & ":" & Server.Serveur(i).RemotePort & " via server.serveur(" & i & ") STATEOK " & Pseudo(i2) & "=" & Etat(i2), True
End If
Next i2
DoEvents
Next i
End Function

++
0
Messages postés
40
Date d'inscription
lundi 7 mai 2001
Statut
Membre
Dernière intervention
12 août 2003

et en fait, ça sert à quoi les DoEvents ?
0
Messages postés
235
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
9 novembre 2007

La fonction DoEvents permet de laisser aux autres applications, et aux commandes envoyées le temps de s'executer. Si tu mets pas ça dans ta boucle, les infos sont envoyées à winsock, mais celui ci n'a pas le tps de les interpretés alors que voila un nouvel arrivage de donnees qui lui parviennent. Ainsi, winsock n'executra que la derniere, a la fin de la boucle.
Essaye Form_Load
Do
Loop
EndSub
-> Ton PC va planter.
Essaye Form_Load
Do
DoEvents
Loop
End Sub
-> Tu pourras e'teindre le prog sans probs..

++
0
Messages postés
40
Date d'inscription
lundi 7 mai 2001
Statut
Membre
Dernière intervention
12 août 2003

c'est bon, un Doevents avant le Senddata et un après, et ça amrche sans pb!
0
Messages postés
235
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
9 novembre 2007

:)
0
Messages postés
40
Date d'inscription
lundi 7 mai 2001
Statut
Membre
Dernière intervention
12 août 2003

tu saurais po comment je pourrais gérer une génération dynamique de forms? en fait, ça serais pr les créer sur demande, un peu comme AIM, ICQ et autres Messengers...
0
Messages postés
235
Date d'inscription
mercredi 4 avril 2001
Statut
Membre
Dernière intervention
9 novembre 2007

je crois que là il ya des tonnes d'exemples sur vbfrance. Recherche simplement bloc-notes ou notepad pour voir, ils se servent de feuilles MDI pour génerer des form filles... a volonté :)
0
Messages postés
40
Date d'inscription
lundi 7 mai 2001
Statut
Membre
Dernière intervention
12 août 2003

ok merci, mais avant je fini de reconfig NT [ma fait un INACCESSIBLE_BOOT_DEVICE ce matin]
0