[C#] Il server TCP invia solo il primo byte... o viceversa.

giovedì 09 settembre 2010 - 10.26

rikicecchi Profilo | Newbie

Salve, io ho un server ed un client programmato secondo le librerie socket standard .Net.
Non copio ancora il codice, perchè è uguale a qualunque altro server/client, senza alcuna variazione, sopratutto nella speranza che questo sia un problema noto e risolvibile con qualche "funzione";

Questo è quello che succede:
- il client si connette al server e richiede la lettura di un file
- il server lo legge e glielo invia

Banalissimo, tranne al fatto che il client riceve l'array data della giusta lunghezza del file, ma con solo il primo byte corretto, il resto uguale a 0.
Allora provando a fare un while limitando a 3 i byte di ricezione succede che ogni volta che ricevo un pacchette è sempre e solo il primo quello corretto.

Ho fatto così (riporto velocemente un codice)
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Se x lo imposto a 3, riceverò 3 byte di pacchetto con il solo byte giusto, con 2 sempre e solo il primo.
Se metto un byte effettivamente il problema si risolve... ma rallenta troppo il programma!

Ditemi se devo aggiungere dettagli,
grazie.

aiedail92 Profilo | Expert

Ciao,

A vedere il codice così, sembra che l'errore possa stare solo nel metodo di "riduzione dell'array" che usi prima di ottenere la stringa.

In realtà, tale metodo di riduzione non è nemmeno necessario, basta usare l'overload che prende, oltre all'array di byte, anche l'offset e la lunghezza della porzione di byte da convertire:

res += Encoding.Default.GetString(data, 0, rec);

Luca
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5