Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - TcpClient c#
Forum - C# / VB.NET - TcpClient c#

Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 10:48
Mercoledì, 30/11/2011
Volevo sapere 2 cose riguardo a TcpClient:

La prima è come posso in una connessione dati creata con TcpClient sapere se all'improvviso il pc a cui sono connesso si disconnette e quindi visualizzare un avviso.

La seconda è come posso interrompere in qualsiasi momento la ricezioni di dati... per ovviare a questo problema avevo usato una socket non bloccante e uscivo dal ciclo di ricezione quando l'utente schiacciava un tasto posso fare lo stesso senza usare una socket non bloccante con TcpClient ?

PM
Avatar
VMikle (Ex-Member)
Rookie


Messaggi: 52
Iscritto: 14/09/2011

Up
2
Down
V
Segnala al moderatore
Postato alle 14:16
Mercoledì, 30/11/2011
Riguardo la prima domanda, devi controllare se l'eccezione IOException contiene nella InnerException un valore SocketException la cui proprietà ErrorCode corrisponde a 10054.
IOException può essere lanciata quando termina un metodo sincrono o quando chiami un metodo EndXXX.
http://msdn.microsoft.com/it-it/library/system.net.sockets ...
http://msdn.microsoft.com/en-us/library/windows/desktop/ms ...

A proposito della seconda il problema non si pone: devi chiudere la connessione se non vuoi ricevere alcun dato.
Se invece il problema è solo di "automatismo", nel senso che i dati vanno letti solo se si presentano determinate condizioni, allora lì bisogna vedere come hai impostato il codice, ad esempio usando un blocco If potresti risolvere il problema :k:.

Ultima modifica effettuata da VMikle il 30/11/2011 alle 14:17
Grazie ! solo che non capisco come funziona InnerException come ottengo l'ErrorCode della socket ? - jaco94++ - 02/12/11 20:12
Usi un Try Catch per catturare una IOException, poi provi la conversione a SocketException e se funziona verifichi ErrorCode - VMikle - 02/12/11 22:23
PM