Posto il codice che utilizzo per connettere due computer con TCPListner e TCPClient, cercando di rendere questo thread più utile per tutti

Lato Server:
1.Genera un form
2.Inserisci un Button (.Text=Ascolta)
3.Inserisci una Textbox

codice:
Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports Microsoft.VisualBasic

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Control.CheckForIllegalCrossThreadCalls = False
        Dim Th As New Threading.Thread(AddressOf Ascolta)
        Th.SetApartmentState(Threading.ApartmentState.STA)
        Th.Start()

    End Sub

    Sub Ascolta()

        Dim server As TcpListener
        server = Nothing
        Try

            'Imposta la porta
            Dim port As Int32 = 2000
            Dim localAddr As IPAddress = IPAddress.Parse("000.000.00.0")
        
            server = New TcpListener(localAddr, port)

            ''Avvia l'apertura della porta "2000"
            server.Start()

            ' Buffer per la lettura dei dati
            Dim bytes(1024) As Byte
            Dim data As String = Nothing

            ' Avvio il ciclo per la connessione
            While True

                TextBox1.Text += "Attendo la connessione..." & vbCrLf

                'Accetto la connessione
                Dim client As TcpClient = server.AcceptTcpClient()

                TextBox1.Text += "Connesso!" & vbCrLf

                data = Nothing

                'Oggetto canale per la ricezione e l'invio
                Dim stream As NetworkStream = client.GetStream()

                Dim i As Int32

                'Ricevo i dati inviati dal client
                i = stream.Read(bytes, 0, bytes.Length)

                While (i <> 0)

                    'Converto i dati da bytes a ASCII.
                    data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)
                    TextBox1.Text += "Ricevuti: " & data & vbCrLf

                    'Analisi dei dati inviati dal client
                    data = data.ToUpper()
                    Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(data)

                    'Invio la risposta al client
                    stream.Write(msg, 0, msg.Length)
                    TextBox1.Text += "Inviato: " & data & vbCrLf
                    i = stream.Read(bytes, 0, bytes.Length)

                End While

                'Chiudo la connessione
                client.Close()

            End While

        Catch ex As SocketException

            TextBox1.Text += "SocketException: " & vbCrLf

        Finally

            server.Stop()

        End Try
    End Sub

End Class
Lato Client:
1.Genera un form
2.Inserisci un Button (.Text=Connetti)
3.Inserisci una Textbox

codice:
Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports Microsoft.VisualBasic

Public Class Form1

      Sub Connect(ByVal server As [String], ByVal message As [String])

        Try

            'Creazione dell'oggetto client
            Dim port As Int32 = 2000
            Dim client As New Sockets.TcpClient(server, port)

            'Converto il messaggio passato come ASCII e lo memorizzo in un array 
            Dim data As [Byte]() = System.Text.Encoding.ASCII.GetBytes(message)

            'Avvio un canale per inviare e ricevere
            Dim stream As NetworkStream = client.GetStream()

            'Invio un messaggio al server connesso 
            stream.Write(data, 0, data.Length)

            TextBox1.Text += "Inviato: " & message & vbCrLf

            'ricevo la risposta del server e la memorizzo nel buffer
            data = New [Byte](256) {}

           Dim responseData As [String] = [String].Empty

            'Leggo la risposta del server tcp
            Dim bytes As Int32 = stream.Read(data, 0, data.Length)
            responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)
            TextBox1.Text += "Ricevuto: " & responseData & vbCrLf

            'Chiudo il canale e la connessione tcp
            stream.Close()
            client.Close()

        Catch ex As ArgumentNullException
            TextBox1.Text += "ArgumentNullException: " & ex.Message & vbCrLf
        Catch ex As Net.Sockets.SocketException
            TextBox1.Text += "SocketException: " & ex.Message & vbCrLf
        End Try

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Connect("000.000.00.0", "Ciao")

    End Sub

In Internet si trova una marea di materiale circa l'utilizzo di questi oggetti, se avete consigli sul codice scritto (ovviamente le funzionalità così sono molto ridotte, infatti non è possibile nemmeno scegliere l'Ip del server o la porta ma è molto semplice modificare questo codice per implementarlo) dite pure.

Per quanto riguarda la connessione FTP, ho scritto che non è molto performante

Citazione:
Per quanto riguarda il trasferimento di file FTP non è poi così performante
Insomma ... veramente, per i file, e' uno dei protocolli che rendono di piu' ...
perchè evidentemente sbaglio qualcosa.

Ma per fare l'upload di un file mdb di modeste dimensioni (Basti pensare ad una sola tabella con 10 colonne (contatore, numeric e string) e solo qualche riga scritta potrebbe passare anche qualche minuto.

Stasera penso di essere alla frutta, domani vi posto il codice.