Torna al Thread
Imports System.Net.Sockets
Imports System.Text.UTF8Encoding
Imports System.IO
Imports System.Windows.Forms.Timer
Imports System.Text
Public Class FrmRecorder
Dim Client As New TcpClient 'Dichiaro nuovo Client.
Dim Stream As NetworkStream 'Dichiaro nuovo Stream.
Private Sub FrmRecorder_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub BtnConnetti_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnConnetti.Click
Dim indirizzo As String = TbxIp.Text 'Metto l'ip dentro alla TbxIP.
Dim porta As String = TbxPorta.Text 'Metto la porta TCP dentra alla TbxPorta.
Client = New TcpClient 'Client è un nuovo TcpClient.
Try
Application.DoEvents()
Client.Connect(indirizzo, porta) 'Connetto il client all'indirizzo ip del Server attraverso la porta tcp.
Catch ex As Exception 'In caso di errore
MsgBox("Connessione fallita!", MsgBoxStyle.Critical, "Errore")
End Try
If Client.Connected Then 'Se il Client è connesso al Server allora..
MsgBox("Connessione riuscita!", MsgBoxStyle.Information, "Info")
Stream = Client.GetStream() 'Stream è l’invio/ricezione (flusso) di dati con il Server al quale Client è connesso.
BtnConnetti.Enabled = False 'Disattiva il tasto Connetti.
End If
TimerLeggiDati.Start() 'Avvio il Timer1 per leggere i dati.
End Sub
Private Sub Leggidati()
If Not Client.Connected Then
Throw New ApplicationException("Server Disconnesso")
End If
If Stream.CanRead Then
Dim Buffer(4095) As Byte '-- 4k
Stream = Client.GetStream() 'Metti in comunicazione il Client con il Server.
Dim ReturnData As String = String.Empty
Dim BytesRead As Integer = 0
Do
BytesRead = Stream.Read(Buffer, 0, Buffer.Length)
If BytesRead > 0 Then
End If
ReturnData = Encoding.GetEncoding(1252).GetString(Buffer, 0, BytesRead)
IO.File.AppendAllText("C:\recorder.txt", ReturnData)
Loop While Stream.DataAvailable 'Ripeto il loop affinchè i dati sono accessibili.
End If
End Sub
Private Sub BtnAnnulla_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAnnulla.Click
TbxIp.Text = ""
TbxPorta.Text = ""
Me.Close()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TimerLeggiDati.Tick
If Client.Available > 0 Then 'Se i dati che ricevi dal server al quale è connesso il Client sono disponibili e sono maggiori di 0.
Dim Buffer(Client.Available - 1) As Byte 'Dichiaro un array con dimensioni uguali al numero di dati ricevuti dal Client meno 1.
Dim ReturnData As String = String.Empty
Dim BytesRead As Integer = 0
Stream = Client.GetStream() 'Metti in comunicazione il Client con il Server.
Do
BytesRead = Stream.Read(Buffer, 0, Buffer.Length) 'Leggo il flusso di dati.
If BytesRead > 0 Then
End If
ReturnData = Encoding.GetEncoding(1252).GetString(Buffer, 0, BytesRead) 'Decodifica ReturnData in stringa UTF8 e mettila in BytesRead.
IO.File.AppendAllText("C:\recorder.txt", ReturnData)
Loop While Stream.DataAvailable 'Ripeto il loop affinchè i dati sono accessibili
End If
End Sub
End Class