Psykobot : fonction d'attente pour winsock

Contenu du snippet

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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.