Chiusura e riapertura connessione TCP

mercoledì 19 dicembre 2012 - 09.35
Tag Elenco Tags  C#  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010

hydra Profilo | Junior Member

Buongiorno a tutti,
sto utilizzando winsock per comunicare con una periferica. Ho fatto tutte le prove del caso e la cosa funziona, sia in trasmissione che in ricezione. Utilizzo un TCPClient per stabilire la connessione. Una cosa che mi sta dando dei problemi è questa: quando io chiudo la connessione, non riesco ad riaprirla subito perchè mi genera un'eccezione, la connessione viene ristabilita dopo qualche tentativo (anche se mi pare che sia una questione di tempo, non di numero di tentativi). In pratica il mio problema è questo: se per caso la connessione dovesse cadere, come faccio ripristinarla "in sicurezza"? Attualmente devo chiudere la connessione in corso, ricreare l'oggetto tcpclient e attendere del tempo prima di effettuare la connessione. È normale o c'è un'altra strada? Inoltre, come posso fare in modo che se mi genera un errore durante la connessione, si ritenti automaticamente un determinato numero di volte prima di generare l'errore? (non so se sia corretto "tentare" la connessione finchè non va a buon fine o se sia meglio chiudere le connessioni o che so io prima di ritentare).
Vi ringrazio del supporto.

Vinsent Profilo | Senior Member

Forse la connessione non è realmente chiusa ma c' è ancora una qualche comunicazione, però effetivamente non lo so...hai già provato a leggere su msdn sul metodo che usi per chiudere la connessione o l' eccezione generata?
Comunque puoi mettere una pezza usando try/catch per intercettare e gestire la specifica eccezione, se si verifica fai partire un timer che dopo tot riprova ed eventualmente una variabile che funge da contatore per il numero di prove, se la cosa è lunga...anche un avviso per l' utente per fargli capire che il programma stà lavorando...ed evitare il click compulsivo...
Ciao
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