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):
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
Ricezione file:
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()
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...
Non capisco il perche di tutto ciò, quindi mi rivolgo a voi
Attendo con anzia una vostra risposta
Cordiali saluti,
Hackaos