Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VB6]Winsock->Verificare che la connessione sia avvenuta

    ciao a tutti,
    devo leggere una mail con il winsock e stavo cercando di verificare gli errori sulla connessione. Se in un fomr inserisco due tasti, dove il primo esegue

    Sub Connessione()
    Winsock.Connect Host, Port
    End Sub

    e il secondo (lo clicco solo quando verifico che sia arrivata la risposta +ok della precedente sub)

    Sub Login()
    Winsock.SendData "USER " & UserName & vbCrLf
    Winsock.SendData "PASS " & Password & vbCrLf
    End Sub

    e fin qui non ci sono problemi e tutto funziona, ma quando ho voluto mettere tutto in un'unica sub sono iniziati i problemi

    sub per la connessione

    Private Sub cmd1_Click()
    '*********************************
    ' CONNESSIONE
    '*********************************

    If Winsock.State <> sckClosed Then
    Winsock.Close
    Else
    Connessione
    'MsgBox Winsock.State, vbCritical
    'abilito il tasto di disconnessione
    'attendo la connessione al server fino a un max di 30 secondi
    Dim a As Date
    Dim b As Date
    Dim Connect As Boolean
    a = Now()
    b = DateAdd("s", 30, a)
    Connect = False
    While (Winsock.State = 7) Or (Now() < b)
    srvmsg.Text = Now()
    If Winsock.State = 7 Then
    Connect = True
    End If
    Wend
    If Connect = True Then
    Winsock.SendData "USER " & UserName & vbCrLf
    Winsock.SendData "PASS " & Password & vbCrLf
    cmd2.Enabled = True
    cmd1.Enabled = False
    Else
    MsgBox "Connessione non Avvenuta", vbInformation
    End If
    End If
    End Sub

    ho notato che il post data lo esegue solo dopo che sono uscito dalla sub. qualcuno mi sa aiutare e correggere?

  2. #2
    credo che per farlo funzionare, io debba attendere la risposta del server, ma ho visto che questa arriva solo dopo che esco dalla sub..qualcuno sa come attendere la risposta del server e quindi continuare con il codice nella sub?

  3. #3
    risolto.

    ciao

  4. #4
    Originariamente inviato da lbottoni
    risolto.

    ciao
    mi interesserebbe sapere come :P
    puoi postare la tua soluzione? grazie

  5. #5
    non ricordo molto bene, perchè è da tempo che non lo guardavo, ma ho fatto così...

    ho creato una funzione
    codice:
    Function WaitTime(RispostaSRV As String, Intervall As Integer) As Boolean
    Dim WaitSt As Date
    WaitSt = Now()
    While InStr(1, RespSRV, RispostaSRV, 1) < 1
        DoEvents
        If DateDiff("s", WaitSt, Now) > Intervall Then
            RespSRV = ""
            WaitTime = False
            Exit Function
        End If
    Wend
    'Registro l'ultima risposta del server in una variabile temporanea
    RespSRVTemp = RespSRV
    RespSRV = ""
    WaitTime = True
    End Function

    che poi richiamavo...

    codice:
     
        If Not WaitTime("+OK", 10) Then
            StBar.Panels(1).Text = "Timeout Connessione..."
            Call cmd2_Click
            Exit Sub
        End If
    attendevo il +OK dell protocollo per 10 secondi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.