Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
Web Services, XML
Socket TCP/IP - Problema buffer di ricezione
domenica 26 giugno 2011 - 20.15
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
C#
|
.NET 4.0
|
Visual Studio 2010
luigi87
Profilo
| Newbie
1
messaggi | Data Invio:
dom 26 giu 2011 - 20:15
Salve a tutti.
Avrei un problema legato ad una console application che sto facendo. In pratica c'è un client che comunica con un server tramite socket TCP, ora io vorrei che la connessione resti sempre aperta tra client e server (a meno che uno dei due non muoia) in modo che, periodicamente, il server invii al client dei dati. Attualmente ho messo come tempo 5 secondi, quindi ogni 5 secondi il server manda dei dati al client.
Per far ciò sto utilizzando la BeginReceive e la EndReceive lato client, perché ho bisogno che il client faccia altro, mentre aspetta di ricever i dati dal server.
Fin qui tutto apposto, poiché la comunicazione tra i due funziona, il problema è che ad un certo punto, si satura il buffer di ricezione del client! Per ricevere i dati tramite BeginReceive , io utilizzo un byte[] di 20000 byte, poiché i dati inviati dal server sono molto grossi, quando il server invia la seconda volta i dati, questo buffer si riempie e, ovviamente, mi viene dato lato client l'errore di de-serializzazione non riuscita.
Ciò che non capisco è come mai succede questa cosa, nel senso che, quando il client legge questo byte[], recupera i dati, li processa e subito si rimette in ascolto di nuovi dati dal server, usando lo stesso buffer e richiamando quindi ricorsivamente la funzione del BeginReceive.
Avevo anche provato, prima di richiamare nuovamente la BeginReceive dopo una ricezione dei dati, a inizializzare nuovamente il byte[] che uso, ma niente.
Inoltre, una cosa strana che ho notato, è che quando recupero, tramite la EndReceive, il numero di byte letti e me lo faccio stampare, tale numero si incrementa ad ogni ricezione, cioè sembra che si accumulano i dati nel buffer, invece a me interessa che ci siano solo i nuovi dati.
Avete qualche idea e anche qualche spiegazione, su come risolvere questo problema?
Scusate la lunghezza della spiegazione, ma era per essere più preciso possibile.
Grazie.
Torna su
Stanze Forum
Elenco Threads
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 !