Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - problema nel inviare file tramite socket (VB.NET)
Forum - C# / VB.NET - problema nel inviare file tramite socket (VB.NET)

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Questo topic è stato chiuso dal moderatore

salve, ho creato un programma che tramite socket invia e riceve file, il mio problema e che nel inviare il file, se sono sullo stesso pc lo ricevo esattamente identico( controllando byte x byte con un altro mio programma), mentre se lo ricevo via LAN, i pacchetti devono essere massimo di 4 byte l'uno se no non so per quale strano motivo arrivano inspiegabilmente diversi di poco solo alcuni pacchetti, e via internet e la stessa storia.. se il pacchetto e supera i 4 byte l'uno molto probabilmente arriva con dei byte diversi.. mentre se sono sullo stesso pc posso anche decidere di inviare e ricevere pacchetti da un mega e il file non viene moificato nemmeno di un byte dall'originale.

il codice per dividere e inviare il file è questo :
Codice sorgente - presumibilmente VB.NET

  1. Private Sub BWInvia_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BWInvia.DoWork
  2.         Cronometro.Start()
  3.         Progresso = 0
  4.         Dim File As File = FileAttuale()
  5.         Dim Reader As New IO.FileStream(File.Percorso, IO.FileMode.Open)
  6.         Dim esci As Boolean
  7.  
  8.         While Not esci = True
  9.             Dim Bytes() As Byte
  10.             If File.len - Progresso <= NBYTE Then
  11.                 If File.len - Progresso = 0 Then
  12.                     Exit While
  13.                 End If
  14.                 ReDim Bytes(Math.Abs(Progresso - File.len))
  15.                 esci = True
  16.             Else
  17.                 ReDim Bytes(NBYTE)
  18.             End If
  19.             Reader.Read(Bytes, 0, Bytes.Length - 1)
  20.             While Not StreamFile.CanWrite = True
  21.             End While
  22.             StreamFile.Write(Bytes, 0, Bytes.Length - 1)
  23.             BWInvia.ReportProgress(Progresso * 100 / File.len)
  24.             Progresso += NBYTE
  25.         End While
  26.         Reader.Close()
  27.         Cronometro.Reset()
  28.     End Sub



mentre per la ricezione :

Codice sorgente - presumibilmente VB.NET

  1. Private Sub BWRicevi_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BWRicevi.DoWork
  2.         Dim File As New IO.FileStream(RiceviFile.Percorso, IO.FileMode.Create)
  3.         Progresso = 0
  4.         Dim esci As Boolean
  5.         Cronometro.Start()
  6.         Do
  7.             If ReceiverFile.Available Then
  8.                 Dim Bytes() As Byte
  9.                 If RiceviFile.len - Progresso <= NBYTE Then
  10.                     ReDim Bytes(RiceviFile.len - Progresso)
  11.                     esci = True
  12.                 Else
  13.                     ReDim Bytes(NBYTE)
  14.                     If Progresso = RiceviFile.len Then
  15.                         esci = True
  16.                     End If
  17.                 End If
  18.                 While Not StreamFile.CanRead = True
  19.                     MsgBox("oi oi oi")
  20.                 End While
  21.                 StreamFile.Read(Bytes, 0, Bytes.Length - 1)
  22.                 File.Write(Bytes, 0, Bytes.Length - 1)
  23.                 BWRicevi.ReportProgress(Progresso * 100 / RiceviFile.len)
  24.                 Progresso += NBYTE
  25.             End If
  26.         Loop Until esci = True
  27.         CambiaStato()
  28.         File.Close()
  29.         Cronometro.Reset()
  30.     End Sub



spero di essermi spiegato :rofl:
grazie in anticipo

PM
Usa i commenti per chiedere spiegazioni o ringraziare le risposte.