Buongiorno,
studiando le guide sui sockets, girovagando un po su google e leggendo le varie domande degli utenti, ho capito come funzionano questi sockets.
Riesco senza problemi ad inviare file in locale, ma sul remoto ho qualche problema...
per inviare uso questo codice ( ricavato dalla guida sui sockets):
Ricezione file:codice:Dim Reader As New IO.FileStream(filename, IO.FileMode.Open) Dim Size As Int64 = FileLen(filename) Dim Bytes(4095) As Byte If Size > 4096 Then For Block As Int64 = 0 To Size Step 4096 If flusso.CanWrite Then If Size - Block >= 4096 Then Reader.Read(Bytes, 0, 4096) flusso.Write(Bytes, 0, 4096) Else Reader.Read(Bytes, 0, Size - Block) flusso.Write(Bytes, 0, Size - Block) End If End if Next Else Reader.Read(Bytes, 0, Size) flusso.Write(Bytes, 0, Size) End If Application.DoEvents() Reader.Close() send("END") End Sub
Ripeto che in locale va tutto bene, i file sono sani e funzionanti; ma il problema si pone in remoto... i file inviati risultano danneggiati parzialmente... per esempio le immagini sono visibili parzialmente e infatti confrontando i byte delll'immagine inviata con quelli della ricevuta si nota subito come molti byte sono sostituiti da spazi vuoti!! come se parte dei byte si perdessero strada facendo...codice:prgProgress.Maximum = 100 prgProgress.Minimum = 0 Dim Stream As New IO.FileStream(FileName, IO.FileMode.Create) aggiornaStato("File in arrivo...") Dim Index As Int64 = 0 Application.DoEvents() Do If Client.Available > 0 Then Dim Bytes(Client.Available - 1) As Byte Dim text As String = ASCII.GetString(Bytes) If text.Contains("END") Or Index >= FileSize Then Exit Do End If flusso(TextBox2.Text).Read(Bytes, 0, Bytes.Length) Stream.Write(Bytes, 0, Bytes.Length) Index += 4096 prgProgress.Value = (Index * 100 / FileSize) End If Loop aggiornaStato("File ricevuto...") Stream.Close() Application.doevents()
Non capisco il perche di tutto ciò, quindi mi rivolgo a voiAttendo con anzia una vostra risposta
Cordiali saluti,
Hackaos

Attendo con anzia una vostra risposta
Rispondi quotando