Oppure

Loading
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
22/03/08 11:17
-jacopo-
Postato originariamente da Il Totem:

No, data deve assumere la lunghezza del Network Stream, altrimenti come fai a copiare tutti i dati?


è in un ciclo while e quindi li dovrebbe copiare tutti!
Infatti se uso lo stesso metodo per una immagine da picturebox a picturebox funziona perfettamente
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