Ho creato una connessione client-server in LAN. Vorrei creare un trasferimento file reciproco (server invia a client e client invia a server). Il trasferimento deve essere semplice:

1- con un openfiledialog si sceglie il file
2- si attende conferma dall'altro PC
3- invia il file in un percorso prestabilito (esempio: desktop)

Naturalmente so l'IP dell'altro PC e ho aperto (anche se non era necessario) una porta del router per velocizzare il tutto... ecco il codice usato per la creazione del programma:

CLIENT
codice:
Imports System.Net.Sockets
Imports System.Text.UTF8Encoding

Public Class Form1

    Dim ascolta As TcpListener
    Dim cliente As TcpClient
    Dim flusso As NetworkStream

    Dim x As Integer

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Try
            Dim temporaneo() As Byte = UTF8.GetBytes("chiusaconnessione123454321")
            flusso.Write(temporaneo, 0, temporaneo.Length)
        Catch ex As Exception
            End
        End Try
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ascolta = New TcpListener(8888)
        ascolta.Start()
        Timer2.Start()
    End Sub

    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        If ascolta.Pending() Then
            Timer2.Stop()
            cliente = ascolta.AcceptTcpClient
            ascolta.Stop()
            flusso = cliente.GetStream()
            Timer1.Start()
            Label1.Text = "NICCO è connesso alla chat."
            My.Computer.Audio.Play(My.Resources.Click, AudioPlayMode.Background)
            Button1.Enabled = True
        End If
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If cliente.Available > 0 Then
            Dim temporaneo(cliente.Available - 1) As Byte
            flusso.Read(temporaneo, 0, temporaneo.Length)
            Dim testo As String = UTF8.GetString(temporaneo)
            If testo = "chiusaconnessione123454321" Then
                MsgBox("NICCO si è disconnesso dalla chat.", MsgBoxStyle.Information, "Attenzione")
                ascolta.Stop()
                ascolta = New TcpListener(8888)
                ascolta.Start()
                Timer2.Start()
                Label1.Text = "In attesa che NICCO si connetta..."
                Button1.Enabled = False
            Else
                RichTextBox1.AppendText(vbCrLf & "-  NICCO: " & testo)
                If Me.TopMost = False Then
                    My.Computer.Audio.Play(My.Resources.Tick, AudioPlayMode.Background)
                End If
            End If
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text = "" Or TextBox1.Text = " " Or TextBox1.Text = "  " Then
            pausa.Start()
        Else
            invia()
        End If
    End Sub
    Private Sub invia()
        pausa.Start()
        Button1.Enabled = False
        Dim temporaneo() As Byte = UTF8.GetBytes(TextBox1.Text)
        flusso.Write(temporaneo, 0, temporaneo.Length)
        RichTextBox1.AppendText(vbCrLf & "-  LOLLO: " & TextBox1.Text)
        If Me.TopMost = False Then
            My.Computer.Audio.Play(My.Resources.Tick, AudioPlayMode.Background)
        End If
        TextBox1.Text = ""
    End Sub

    Private Sub pausa_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pausa.Tick
        x = x + 1
        If x = 1 Then
            pausa.Stop()
            Button1.Enabled = True
            x = 0
        End If
    End Sub

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        If e.KeyCode = Keys.Enter Then
            If Button1.Enabled = True Then
                If TextBox1.Text = "" Or TextBox1.Text = " " Or TextBox1.Text = "  " Then

                Else
                    invia()
                End If
            End If
        End If
    End Sub

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        Dim valore As Int32 = System.Convert.ToInt32(e.KeyChar)
        e.Handled = (valore = 13)
    End Sub

End Class
Come è possibile vedere ho realizzato una chat per ora.

SERVER
codice:
Imports System.Net.Sockets
Imports System.Text.UTF8Encoding

Public Class Form1

    Dim cliente As TcpClient
    Dim flusso As NetworkStream

    Dim x As Integer

    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Try
            Dim temporaneo() As Byte = UTF8.GetBytes("chiusaconnessione123454321")
            flusso.Write(temporaneo, 0, temporaneo.Length)
        Catch ex As Exception
            End
        End Try
    End Sub

    Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        collegamento.Start()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If cliente.Available > 0 Then
            Dim temporaneo(cliente.Available - 1) As Byte
            flusso.Read(temporaneo, 0, temporaneo.Length)
            Dim testo As String = UTF8.GetString(temporaneo)
            If testo = "chiusaconnessione123454321" Then
                MsgBox("LOLLO si è disconnesso dalla chat.", MsgBoxStyle.Information, "Attenzione")
                collegamento.Start()
                Button1.Enabled = False
                Label1.Text = "In attesa che LOLLO si connetta..."
            Else
                TextBox2.AppendText(vbCrLf & "-  LOLLO: " & testo)
            End If
        End If
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox1.Text = "" Or TextBox1.Text = " " Or TextBox1.Text = "  " Then
            pausa.Start()
        Else
            invia()
        End If
    End Sub

    Private Sub invia()
        pausa.Start()
        Button1.Enabled = False
        Dim temporaneo() As Byte = UTF8.GetBytes(TextBox1.Text)
        flusso.Write(temporaneo, 0, temporaneo.Length)
        TextBox2.AppendText(vbCrLf & "-  NICCO: " & TextBox1.Text)
        TextBox1.Text = ""
    End Sub

    Private Sub collegamento_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles collegamento.Tick
        Try
            Dim indirizzo As Net.IPAddress
            Net.IPAddress.TryParse("192.168.1.173", indirizzo)
            cliente = New TcpClient
            cliente.Connect(indirizzo, 8888)
            If cliente.Connected Then
                collegamento.Stop()
                Label1.Text = "LOLLO è connesso alla chat."
                Button1.Enabled = True
                flusso = cliente.GetStream()
                Timer1.Start()
            End If
        Catch ex As Exception

        End Try
    End Sub

    Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
        If e.KeyCode = Keys.Enter Then
            If Button1.Enabled = True Then
                If TextBox1.Text = "" Or TextBox1.Text = " " Or TextBox1.Text = "  " Then

                Else
                    invia()
                End If
            End If
        End If
    End Sub

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        Dim valore As Int32 = System.Convert.ToInt32(e.KeyChar)
        e.Handled = (valore = 13)
    End Sub

    Private Sub pausa_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pausa.Tick
        x = x + 1
        If x = 1 Then
            pausa.Stop()
            Button1.Enabled = True
            x = 0
        End If
    End Sub
End Class
Spero mi sappiate aiutare, ciao.