Salve a tutti..
sto scrivendo scrivendo un programma che deve rimanere in ascolto sulla porta 1027 di un server che tramite telefono riceve informazioni da altri apparati remoti.Ora quando premo il pulsante di connessione avviene la connessione all'IP e alla porta indicati, verifico che la connessione sia attiva e passo il controllo alla SUB Timer_Tick, la quale se ho ben capito , esegue il codice fino al Timer.Stop. In questo tempo ricevo il flusso dal server, lo decodifico, e lo salvo in un file temporaneo in modo da poterlo leggere subito dopo riga per riga. In questo modo aggiungo le righe come record in un DB di Access alla fina cancello il file temporaneo.
Ora quando premo il pulsante, effettuata la connessione, dovrebbe scaricare i dati dal server e poi rimanere in attesa di altri dati. In realtà mi scarica il primo flusso di dati, poi se il server riceve altre informazioni, quindi il buffer è carico, non avviene più nessuna attività, a meno che non premo nuovamente il pulsante di connessione !!!
Cosa c'è che non va ??
codice:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        
        Call connetti()

    End Sub
    Public Sub connetti()
        Dim AddressIP As String = TextBox1.Text 'Metto l'ip dentro ad AddressIP

        Centrale = New TcpClient 'Centrale è un nuovo client
        Centrale.Connect(AddressIP, Porta) 'Connetti Centrale all'indirizzo ip indirizzo attraverso la porta xxxx

        If Centrale.Connected Then 'Se Centrale è connesso allora... (cioè se il server è in ascolto)
            flusso = Centrale.GetStream() 'flusso è l’invio/ricezione (Stream) di dati con il server al quale Centrale è connesso
            Timer1.Start() 'Avvio Timer1
        Else 'Altrimenti...
            TextBox3.Text = TextBox3.Text & "Il server non risponde!" & vbCrLf 'Scrivo in TextBox3
        End If 'Fine se
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        On Error Resume Next
        Centrale.Close() 'Chiudo la connessione
        TextBox3.Text = TextBox3.Text & "Il server è disconnesso!" & vbCrLf 'Scrivo in TextBox3
        x = 0
        'Timer1.Stop()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

        Label1.Text = Str(x)
        If Centrale.Connected Then
            ToolStripStatusLabel1.Text = "Connesso al Server: " & TextBox1.Text & " sulla porta:" & TextBox2.Text
            If Centrale.Available > 0 Then 'Se i dati che ricevi dal server al quale è connesso Centrale sono disponibili e sono maggiori di 0
                x = x + 1
                ToolStripStatusLabel1.Text = "...ricezione dati..."
                Dim temp(Centrale.Available - 1) As Byte 'Dichiaro un array con dimensioni uguali al numero di dati ricevuti da Centrale meno 1
                flusso.Read(temp, 0, temp.Length) 'Leggo il flusso di dati
                Dim testo As String = UTF8.GetString(temp) 'Decodifica temp in stringa UTF8 e mettila in testo
                My.Computer.FileSystem.WriteAllText(FileTMP, testo & vbCrLf, True) ' scrivo sul file l'output della centrale
                TextBox3.Text = TextBox3.Text & My.Computer.FileSystem.ReadAllText(FileTMP) ' leggo dal file e popolo la TextBox
                If File.Exists(FileTMP) Then
                    Dim oRead As System.IO.StreamReader
                    Dim stringasql As String
                    ConnessioneDB.Open() '               Apro la connessione al DB
                    oRead = File.OpenText(FileTMP) '     Leggo il contenuto del file di testo
                    While oRead.Peek <> -1
                        testo = oRead.ReadLine '         Leggo una riga per volta del file di testo
                        If Len(testo) > 0 Then '         se la riga non è vuota la scrivo nel DB
                            stringasql = "Insert into Flusso(Messaggio) values('" & testo & "')"
                            Comando = New OleDbCommand(stringasql, ConnessioneDB)
                            Comando.ExecuteNonQuery()
                        End If
                    End While
                    oRead.Close() '                      chiudo il file di testo
                    ConnessioneDB.close() '              chiudo la connessione al DB
                    File.Delete(FileTMP) '               cancello il file di testo
                End If
            End If '                                     Fine se
        Else
            ToolStripStatusLabel1.Text = "Disconnesso"
            Timer1.Stop()
        End If
        'Centrale.Close()
    End Sub
grazie a tutti