19/03/08 11:39
-jacopo-
Ciao! devo trasferire un file da un pc ad un altro.
Inizio inviando i byte in uno stream così:
Dim bytes2 As Object = file.ReadAllBytes(origine.Text)
NetStr.Write(bytes2, 0, bytes2.Length)
E li ricevo così:
Dim data(1) As Byte
Dim s2 As New MemoryStream
While Client.Available > 0
Dim nws As NetworkStream = Client.GetStream
Dim bytesRead As Integer = nws.Read(data, 0, data.LongLength)
s2.Write(data, 0, bytesRead)
Dim Bytes(s2.Length - 1) As Byte
s2.Read(Bytes, 0, Bytes.Length)
IO.File.WriteAllBytes(percorso.Text, Bytes)
Il nuovo file però presenta una perdita di byte, ad esempio una canzone di 4,71 mega è diventata di 4,7. Qualcuno sa dirmi perché???
Grazie
Ultima modifica effettuata da -jacopo- 19/03/08 11:41
aaa
19/03/08 17:35
Il Totem
Forse perchè dichiari Data come un array di 2 bytes?
aaa
21/03/08 16:31
-jacopo-
quindi dovrei mettere Dim data(0) As Byte ?
aaa
22/03/08 7:26
Il Totem
No, data deve assumere la lunghezza del Network Stream, altrimenti come fai a copiare tutti i dati? Devi quindi dichiararlo senza dimensioni e poi ridimensionarlo con ReDim, una volta letto il numero di bytes contenuti nel file.
aaa
23/03/08 14:32
Il Totem
Allora deve funzionare, non può andare solo certe volte. Il file musicale risulta danneggiato? Altrimenti potrebbe essere solo un'approssimazione.
aaa
26/03/08 12:17
-jacopo-
risulta danneggiato purtroppo, ho provato anche con altri file, tipo exe ma tutti sono danneggiati e con alcuni byte in meno
aaa
27/03/08 15:57
Il Totem
Prova a correggere il codice in questo modo:
If Client.Available > 0 Then
Dim nws As NetworkStream = Client.GetStream
Dim bytesToRead(Client.Avaiable - 1) As Byte
nws.Read(bytesToRead, 0, bytesToRead.Length)
IO.File.WriteAllBytes(percorso.Text, BytesToRead)
End If
Ultima modifica effettuata da Il Totem 27/03/08 15:59
aaa