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 Ricezione file
Forum - C# / VB.NET - Problema Ricezione file

Avatar
Hackaos (Normal User)
Rookie


Messaggi: 24
Iscritto: 19/06/2011

Segnala al moderatore
Postato alle 20:43
Sabato, 25/08/2012
Ho un piccolo problema...., praticamente un client manda un file (di 57 kb circa), il server dovrebbe ricevere il medesimo file.... ma invece arriva un file di 8 Kb

Uso questo semplice codice per inviare

Codice sorgente - presumibilmente C# / VB.NET

  1. Dim file() As Byte = IO.File.ReadAllBytes("miofile.exe")
  2.           FlussoDati.Write(file, 0, file.Length)



Leggo tutti i bytes del file, lo dichiaro come file e lo invio...

Per Ricevere....:
Codice sorgente - presumibilmente C# / VB.NET

  1. Dim file(client.Available - 1) As Byte
  2.                   flusso.Read(file, 0, file.Length)
  3.   IO.File.WriteAllBytes("C:\miofilericevuto.exe", file)



Bho, a prima vista nn fa na piega secondo me... ma il file che arriva p di soli 8 kb...

Magari se potreste dirmi il perche...?

Ultima modifica effettuata da Hackaos il 25/08/2012 alle 20:44


HaCkAos
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 21:51
Sabato, 25/08/2012
Quando lo ricevi devi fare in modo che lui lo legga
finchè il file non è finito. Cioè tipo
Codice sorgente - presumibilmente C# / VB.NET

  1. While flusso.Peek -1
  2. 'Leggo i dati
  3. End While



Prova, perchè non mi ricordo molto bene
Ciao :k:


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
Hackaos (Normal User)
Rookie


Messaggi: 24
Iscritto: 19/06/2011

Segnala al moderatore
Postato alle 23:14
Sabato, 25/08/2012
Grz Della risposta... cmq nn ho mai usato questa funzione peek... cmq nn credo sia il server che chiude il file prima che abbia finito di ricevere dati, xche è impostato un timer che se ci sn dati disponibili dal client, lui li accetta e li scrive nel file..
x intenderci:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Timer4_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer4.Tick
  2.         If Client(TextBox2.Text).Available > 0 Then
  3.             Dim bytes(Client(TextBox2.Text).Available - 1) As Byte
  4.              bytes.GetLength(0)
  5.             flusso(TextBox2.Text).Read(bytes, 0, bytes.Length)
  6.             File.WriteAllBytes("C:\Ricevuto.bmp", bytes)
  7.         End If
  8.     End Sub



usando il comando GetLenght sia nel server che nel client, conferma che nel server la dimensione è 57465 byte, mentre nel client ne arrivano 8192 byte e non di piu. Il server manda quelli e basta secondo me.
Forse dovrei provare a dividere in pezzi di 8192 byte il file...qundi mandare al server ogni singolo pezzo e poi ricomporlo. Ovviamente la domanda "Ma come XD" mi sorge spontanea ahah


HaCkAos
PM Quote
Avatar
LittleHacker (Member)
Guru


Messaggi: 1033
Iscritto: 28/04/2009

Segnala al moderatore
Postato alle 23:23
Sabato, 25/08/2012
Prova a mandarmi il codice del client e server in allegato così provo a vedere cosa posso fare, è più facile se l'ho sotto mano :)
:k:

Ultima modifica effettuata da LittleHacker il 25/08/2012 alle 23:31


Android User :)

MudStorm OS Source GitHub: https://github.com/Piso94/MudStorm-OS
PM Quote
Avatar
Hackaos (Normal User)
Rookie


Messaggi: 24
Iscritto: 19/06/2011

Segnala al moderatore
Postato alle 23:37
Sabato, 25/08/2012
Ti ho aggiunto su skype


HaCkAos
PM Quote