Problema Socket vb.net

lunedì 15 ottobre 2012 - 19.33
Tag Elenco Tags  VB.NET  |  .NET 3.5

rob88 Profilo | Junior Member

Salve a tutti...
Ho un applicazione server che comunica con N applicazioni client tramite socket. Utilizzo la classe tcpListener per il server, e la classe tcpclient per i vari Client connessi. Il mio problema sorge nel momento in cui un client perde la connessione(es. caduta adsl) e al server risulta sempre connesso. C'è un modo per catturare la caduta di connessione di un client???
Grazie

Vinsent Profilo | Senior Member

Ho dato un' occhiata veloce su MSDN, per curiosità mia..., e non ho trovato niente a riguardo.
Forse puoi risolvere facendo in modo che ad intervalli sia il client che il server si mandino dei messaggi per verificare se la controparte è UP, tipo un banale Ping...
Ciao

rob88 Profilo | Junior Member

Ciao e grazie della risposta...girovagando per la rete ho trovato diverse "teorie" riguardo ai socket e sono andato in confusione. Da un lato ci sono gli oggetti TcpListener e TcpClient...dall'altro gli oggetti creati dalla classe system.net.sockets.socket . Il problema è che non ho capito a questo punto quale delle due usare.
Grazie!!!

Vinsent Profilo | Senior Member

Al di là dalle classi da usare che sinceramente conosco solo a livello teorico...e applicando un pò di logica...
Tu hai più "persone" (i client) ognuna legata con un filo (la connessione) ad un singolo "personaggio" (il server).
Che tu sia il "personaggio" o la "persona", se vuoi controllare che il "filo" sia ancora "teso" ti basta tirarlo per verificare se è ancora "legato".
Se un' "elemento" estraneo taglia il filo, come fanno la persona o il personaggio a sapere che il filo è stato tagliato e non sono più legati senza provare a tirare il filo? NB:"elemento" è un malandrino che non dice niente a nessuno...
L' unica soluzione a cui arrivo è quella descritta nel mio post precedente...
ciao!

Feroxis Profilo | Junior Member

Provai in questo modo per lo stesso problema.
Ogni volta che arriva un messaggio azzera un timer nel server, quando il timer arriva a n seconodi (ovvero il client non invia messaggi per nsecondi) esegue un ciclo dove si invia una richiesta al client e se il messaggio di risposta non torna allora la connessione è persa, ritorna all'inizio in attesa di connessione da parte del client.
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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5