Tous les programmeurs en Visual Basic 6 ont rencontrés le problème de l'envoit de plusieurs messages avec winsock qui les concatène avant l'émission, et le problème d'attente de la connexion avant l'envoit des premières données, avoir j'ai fait une fonction d'attente.
Veuillez lire le texte apres le code source, c'est important pour que le code fonctionne !
PS : Code à placer dans un module
Source / Exemple :
Const Connected = 1
Const SendComplete = 2
Public Bot As Winsock
Public DataSended As Boolean, Abord As Boolean, lpConnected As Boolean
Sub Wait(ByVal Condition As Long)
'Conditions :
'1 : Connected
'2 : SendComplete
If Condition = Connected Then
While lpConnected = False
DoEvents
Wend
ElseIf Condition = SendComplete Then
While DataSended <> True And Abord = False
DoEvents
Wend
Else
If Condition = Connected Then Exit Sub
If Condition = SendComplete Then Exit Sub
End If
DataSended = False
Abord = False
If Bot.State <> 7 Then Wait Connected
End Sub
Conclusion :
Vous avez surement remarqué le Abord, le DataSended et le lpConnected. Abord, c'est en fait une variable pour éviter une boucle infinie. Si le temps passé dans la boucle est trop lent, un simple Abord = True arrète la boucle. DataSended est une variable qui vérifit que les données ont été envoyées, et lpConnected vérifit si la connexion est vraiment établie lors de la réception du premier message, dans la procédure Private Sub Sock_DataArrival(ByVal bytesTotal As Long). Pour cela, il faut ajouter dans la procédure SendComplete() de votre winsock cette ligne :
DataSended = True
et dans Private Sub Sock_DataArrival(ByVal bytesTotal As Long) :
lpConnected = True