Oppure

Loading
19/01/15 13:48
Roby94
Si avete pienamente ragione, volevo solo evitare di aspettare che il client dovesse inviare dei dati per verificare la connessione.
E gestione con errori in fase di invio sia, si capisce subito che è la scelta migliore.

Grazie mille.
aaa
19/01/15 14:11
Roby94
Scusate ma vorrei integrare la domanda, e se le parti fossero invertite? Il server deve solo attendere una connessione e quando arriva deve attendere dei dati, come puo capire se la "connessione" cade tra i due? In questo caso il server non puo controllare degli errori visto che non fa altro che aspettare.
aaa
19/01/15 14:49
In genere il server avvia una funzione

receive

in un thread specifico per ogni client e in questo caso la receive è sincrona. Esce con un errore (che indica la caduta della connessione) e interrompe il thread.

19/01/15 14:57
HeDo
gli eventi di "caduta di connessione" sono gestiti dal TCP, tu devi solo intercettarli :)
aaa
19/01/15 16:06
Roby94
Ho sempre adoperato il metodo DataAvailable per verificare se leggere i dati con ReadByte().
DataAvailable controlla anche se il client remoto ha chiuso la connessione?
aaa
19/01/15 16:15

Da MSDN ...

Utilizzare la proprietà DataAvailable per determinare se i dati sono pronti per la lettura. Se DataAvailable è true, una chiamata a Read viene terminata immediatamente. Se l'host remoto viene arrestato o la connessione viene chiusa, DataAvailable può generare una SocketException.
19/01/15 20:14
Roby94
Scusa, hai ragione nessuno, solo che non faccio altro che passare da una pagina all'altra di MSDN e molte mi lasciano con tanti dubbi e a volte preferisco chiedere e avere i pareri di chi ha gia sbattuto la testa contro queste problematiche.
aaa