Riconnessione WINSOCK disconnesso - Visual Basic Tips and Tricks - Forum - Visual Basic - VB6
Questo sito utilizza cookie tecnici e di terze parti. Continuando la navigazione sul nostro sito accetti l'uso dei cookie. Per saperne di più leggi l'informativa sui cookie.   


Riconnessione WINSOCK disconnesso
Ultimo messaggio: 18 ago 2019 21:04 di devil128. 3 Risposte.
Stampa gradevole
Solo gli utenti registrati possono rispondere ad una discussione.
Avatar
devil128
Messaggi: 22
Iscritto dal: 30 apr 2012 00:16
Utente
Utente

18 ago 2019 11:06

Buongiorno e grazie in anticipo a chi mi volesse venire in aiuto , per un dilemma che non riesco a risolvere da giorni.

In pratica ho un client ed un server che comunicano tra di loro tramite winsock, tutto ok invio e ricevo le risposte tranquillamente. Per far si di non tralasciare nulla ho inviato appositamente un messaggio che mandi il winsock in errror , ricevo l'errore in :

  Private Sub Winsock1_Error(ByVal Number As Integer, _
          Description As String, ByVal Scode As Long, _
          ByVal Source As String, ByVal HelpFile As String, _
          ByVal HelpContext As Long, CancelDisplay As Boolean)

          MsgBox Description, vbOKOnly, "Winsock Error: " & Number
          CancelDisplay = True
          Winsock1.Close
       
          End Sub


di conseguenza la connessione viene chiusa come da codice sopra descritto, ma se provo a riconnetermi tramite timer  settato a 1500:

Private Sub Timer1_Timer()

If Winsock1.State = 0  Then  Winsock1.Connect iplan, port

End sub 

La connessione viene rifiutata

mentre se eseguo immediatamente da tasto la stessa operazione la connessione viene ripristinata:

Private Sub Command1_Click()
If Winsock1.State = 0 Then Winsock1.Connect iplan, port
End Sub

Come posso ripristinare la connessione immediatamente dopo winsock.close ?

Grazie a tutti per l'aiuto


    Avatar
    SirJo
    Messaggi: 2432
    Iscritto dal: 30 apr 2012 08:43
    Utente
    Utente

    18 ago 2019 12:45
    sembrerebbe solo un problema di temporizzazione, cioè non fare subito il Connect ma aspetta un po'.
    E poi il comando Close glielo darei comunque.
    Prova a fare

    If Winsock1.State = 0 Then
        Winsock1.Close
        Sleep(500)
        Winsock1.Connect iplan, port
    End If

    Eventualmente prova ad aumentare la pausa

    Edit:
    ho riguardato dei vecchi corgenti in VB6 dove utilizzavo il Winsock e non avevo messo pause per cui dovrebbe funzionare anche senza, probabilmente il problema non è su questo codice, può essere che è il server che non ha ancora sentito che il socket si è chiuso e non è ancora in modalità Listen

      Avatar
      alip1
      Messaggi: 103
      Iscritto dal: 30 apr 2012 09:34
      Utente
      Utente

      18 ago 2019 14:05
      Prova a stoppare il timer
        Avatar
        devil128
        Messaggi: 22
        Iscritto dal: 30 apr 2012 00:16
        Utente
        Utente

        18 ago 2019 21:04

        Grazie per l'aiuto se provo con sleep, oppure ad interrompere il timer stesso risultato mi ritorna connessione rifiutata, oppure indirizzo in uso come se la connessione fosse ancora attiva. Ho provato nel timer con:

        If Winsock1.State = 0 Then

        Winsock1.LocalPort = 9100
        Winsock1.Close
        Winsock1.Connect iplan, 9100

        End sub

        ed alcune volte funziona la riconnessione ma non sempre.

         

          Solo gli utenti registrati possono rispondere ad una discussione.