18/01/15 22:57
Roby94
Buonasera.
Solitamente quando adopero socket TCP non ho mai necessità di avere un aggiornamento in real time dello stato della connessione, ora però mi trovo ad avere un UI che per rimanerne operativa deve sapere che la connessione con il server "funzioni". Ho sempre verificato la connessione in fase di invio mediante verifica del ACK ricevuto, ora però avrei bisogno di un aggiornamento con un con periodo fisso; ogni 500ms potrebbe andare. Avevo pensato di implementare nel UI un thread che inviasse periodicamente un byte che il server scartasse una volta ricevuto. Data questa procedura un dubbio mi assale, l'UI parallelamente al thread di controllo può inviare una matrice di 4 byte, dove il primo non è mai uguale al byte di verifica, il server ricevuto questo byte si attende i restanti 3 byte che pero non è garantito che siano diversi dal byte di verifica, quindi se per caso UI inviasse il carattere di controllo durante una comunicazione causerebbe un disallineamento del segnale visto che il server potrebbe interpretare il byte di verifica come uno dei 3 byte di dati.
Ho letto che si può richiedere uno stato della connessione adoperando il metodo pool della classe Socket ma non riesco a capirne il funzionamento e come questo possa verificare la connessione senza inviare dei dati come potrei inviarli io con il byte di verifica.
Qualcuno mi potrebbe spiegare una soluzione corretta per evitare spiacevoli inconvenienti?
Grazie.
Solitamente quando adopero socket TCP non ho mai necessità di avere un aggiornamento in real time dello stato della connessione, ora però mi trovo ad avere un UI che per rimanerne operativa deve sapere che la connessione con il server "funzioni". Ho sempre verificato la connessione in fase di invio mediante verifica del ACK ricevuto, ora però avrei bisogno di un aggiornamento con un con periodo fisso; ogni 500ms potrebbe andare. Avevo pensato di implementare nel UI un thread che inviasse periodicamente un byte che il server scartasse una volta ricevuto. Data questa procedura un dubbio mi assale, l'UI parallelamente al thread di controllo può inviare una matrice di 4 byte, dove il primo non è mai uguale al byte di verifica, il server ricevuto questo byte si attende i restanti 3 byte che pero non è garantito che siano diversi dal byte di verifica, quindi se per caso UI inviasse il carattere di controllo durante una comunicazione causerebbe un disallineamento del segnale visto che il server potrebbe interpretare il byte di verifica come uno dei 3 byte di dati.
Ho letto che si può richiedere uno stato della connessione adoperando il metodo pool della classe Socket ma non riesco a capirne il funzionamento e come questo possa verificare la connessione senza inviare dei dati come potrei inviarli io con il byte di verifica.
Qualcuno mi potrebbe spiegare una soluzione corretta per evitare spiacevoli inconvenienti?
Grazie.
aaa