
-jacopo- (Normal User)
Rookie
    
Messaggi: 28
Iscritto: 29/01/2008
|
Ciao! devo trasferire un file da un pc ad un altro.
Inizio inviando i byte in uno stream così:
Codice sorgente - presumibilmente C# / VB.NET |
Dim bytes2 As Object = file.ReadAllBytes(origine.Text)
NetStr.Write(bytes2, 0, bytes2.Length)
|
E li ricevo così:
Codice sorgente - presumibilmente VB.NET |
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- il 19/03/2008 alle 12:41 |
|

Il Totem (Admin)
Guru^2
    
Messaggi: 3635
Iscritto: 24/01/2006
|
Forse perchè dichiari Data come un array di 2 bytes?
|
|

-jacopo- (Normal User)
Rookie
    
Messaggi: 28
Iscritto: 29/01/2008
|
quindi dovrei mettere Dim data(0) As Byte ?
|
|

Il Totem (Admin)
Guru^2
    
Messaggi: 3635
Iscritto: 24/01/2006
|
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.
|
|

-jacopo- (Normal User)
Rookie
    
Messaggi: 28
Iscritto: 29/01/2008
|
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 |
|

Il Totem (Admin)
Guru^2
    
Messaggi: 3635
Iscritto: 24/01/2006
|
Allora deve funzionare, non può andare solo certe volte. Il file musicale risulta danneggiato? Altrimenti potrebbe essere solo un'approssimazione.
|
|

-jacopo- (Normal User)
Rookie
    
Messaggi: 28
Iscritto: 29/01/2008
|
risulta danneggiato purtroppo, ho provato anche con altri file, tipo exe ma tutti sono danneggiati e con alcuni byte in meno
|
|

Il Totem (Admin)
Guru^2
    
Messaggi: 3635
Iscritto: 24/01/2006
|
Prova a correggere il codice in questo modo:
Codice sorgente - presumibilmente VB.NET |
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 il 27/03/2008 alle 16:59 |
|