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