Allora mi sono accorto che si blocca esattamente a 4096 byte se il file è più piccolo lo spedisce e ci aggiunge lui dei byte vuoi fino a 4096 se è più grande si interrompe a 4096
L' errore deve essere tra le seguenti righe di codice:

codice:
 
Private Sub bgSendFile_DoWork(ByVal sender As Object, _
        ByVal e As DoWorkEventArgs) Handles bgSendFile.DoWork
        'Ottiene il nome del file dall'argomento passato al metodo
        'RunWorkerAsync nella procedura precedente
        Dim FileName As String = e.Argument
        'Crea un nuovo lettore del file a basso livello, così
        'da poter ottenere bytes di informazione anziché caratteri
        'come nello StreamReader
        Dim Reader As New IO.FileStream(FileName, IO.FileMode.Open)
        'Calcola la grandezza del file, per poter poi tenere
        'l'utente al corrente della percentuale di completamento
        Dim Size As Int64 = FileLen(FileName)
        'Un blocco di bytes da 4096 posti. Il file viene spedito in
        '"pacchettini" per evitare di sovraccaricare la connessione
        Dim Bytes(4095) As Byte

        'Se il file è più grande di 4KiB, lo divide
        'in blocchi di dati da 4096 bytes
        If Size > 4096 Then
            For Block As Int64 = 0 To Size Step 4096
                'Se i bytes rimanenti sono più di 4096,
                'ne legge un blocco intero
                If Size - Block >= 4096 Then
                    Reader.Read(Bytes, 0, 4096)
                Else
                    'Altrimenti un blocco più piccolo
                    Reader.Read(Bytes, 0, Size - Block)
                End If
                'Scrive i dati prelevati sullo stream di rete,
                'inviandoli così al server
                NetFile.Write(Bytes, 0, 4096)
                'Riporta la percentuale all'utente
                bgSendFile.ReportProgress(Block * 100 / Size)
                'Smette per 30ms, così da dare tempo dal
                'server di poter processare i pacchetti uno per
                'uno, evitando confusione
                Threading.Thread.Sleep(30)
            Next
        Else
            'Se il file è minore di 4KiB, lo invia tutto
            'direttamente dal server
            Reader.Read(Bytes, 0, Size)
            NetFile.Write(Bytes, 0, Size)
        End If
        Reader.Close()

        'Percentuale massima: lavoro terminato
        bgSendFile.ReportProgress(100)
        Threading.Thread.Sleep(100)
        'Comunica la fine delle operazioni
        NetFile.Write(ASCII.GetBytes("END"), 0, 3)
        MessageBox.Show("File inviato con successo!", Me.Text, _
            MessageBoxButtons.OK, MessageBoxIcon.Information)
        Me.cmdSend.Enabled = True
    End Sub