Ciao raga

Il codice che vi sto per postare serve per connettere due pc tramite tcp per lo scambio di dati:

codice:
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.Net.Sockets
Imports System.Net.Sockets.TcpClient
Imports System.Net
Imports System

Public Class Form1
    Private moTcpClient, moTcpRxClient As TcpClient



    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim moTcpServer = New TcpListener(13000)
        moTcpServer.Start()
        lb1.Text = ("Listening...")
        Button3.Enabled = False
        Button2.Enabled = True
        Button1.Enabled = False
        Do While Not moTcpServer.Pending
            Application.DoEvents()
        Loop
        moTcpRxClient = moTcpServer.AcceptTcpClient
        lb1.Text = ("Connection received...")
        moTcpServer.Stop()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim moLocalIP = Dns.GetHostByName(Dns.GetHostName)
        Dim ip = moLocalIP.AddressList(0).ToString
        '// Creates object

        Dim oPerson As New Person(TextBox1.Text, Int32.Parse(TextBox2.Text))

        '// Let's use dotNET TcpClient
        moTcpClient = New TcpClient()
        moTcpClient.Connect(ip, 13000)
        If moTcpClient.GetStream.CanWrite Then

            '// Serializes object in memory
            Dim bf As New BinaryFormatter()
            Dim oStream As New System.IO.MemoryStream()
            bf.Serialize(oStream, oPerson)
            '// Gets bytes...
            Dim buf(CInt(oStream.Length)) As Byte
            oStream.Position = 0
            Dim iRet As Int32 = oStream.Read(buf, 0, buf.Length)
            oStream.Close()
            '// Send object through TCP-IP...
            moTcpClient.GetStream.Write(buf, 0, buf.Length)
            Button3.Enabled = True
            Button2.Enabled = False
        End If
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        '// Deserializes object
        Dim oNs As NetworkStream = moTcpRxClient.GetStream
        If oNs.CanRead Then
            If oNs.DataAvailable Then
                '// Deserializes object
                Try
                    Dim bf As New BinaryFormatter()
                    Dim oRxPerson As Person = CType(bf.Deserialize(oNs), Person)
                    Risultato.Text = String.Format("Name:{0} Age:{1}", oRxPerson.Name, oRxPerson.Age)
                Catch ex As Exception
                    '// Something wrong...
                    MessageBox.Show(ex.Message, "Deserialization error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Finally
                    '// Closes connection
                    moTcpRxClient.Close()
                    ' btnDeser.Enabled = False
                    Button3.Enabled = False
                    Button2.Enabled = False
                    Button1.Enabled = True
                End Try
            End If
        End If
    End Sub
End Class

'// Just a simple person object...
<Serializable()> Public Class Person
    Public Name As String
    Public Age As Int32
    Public Sub New(ByVal name As String, ByVal age As Int32)
        Me.Name = name
        Me.Age = age
    End Sub
End Class

Quest'esempio trovato in rete serve per mandare una stringa da un pc all'altro tramite tcp.

io invece vorrei inviare un file fisico esempio un "file.pdf", e che l'utente di destinazione quando va a deserializzare il file lo salvi automaticamente nella sua cartella Condivisi...

Come posso modificare il sopracitato codice per fare quanto detto?
Ho provato in vari modi ma nn ci riesco
Grazie mille