Salve ragazzi.
Volevo porvi un quesito perchè non ne riesco a venir fuori.
Devo implementare un server UDP che resta solo in ascolto dei messaggi che i client UDP gli inviano. Questi messaggi servono fondamentalmente ad avvisare il server che lo specifico client è ancora attivo (una specie di keepalive). Se un client non manda messaggi per 3 secondi, il server lo deve considerare morto.
Come faccio a controllare se un client non mi manda messaggi da più di 3 secondi?
Se utilizzo setSoTimeout() viene eseguito il test sulla DatagramSocket... e li arrivano tutti i messaggi dei client, quindi non va bene per sapere se un particolare client non manda messaggi da più di 3 secondi.
La mia idea era quella di crearmi una tabella nella quale andavo ad inserire ogni client che mi mandava il messaggio e il tempo in cui mi era stato mandato. Se poi il client era già inserito andavo a controllare quando mi aveva mandato l'ultimo messaggio e così potevo veder se erano passati più di tre secondi. Inoltre avrei dovuto controllare la tabella ogni tre secondi (fare una specie di refresh) per eliminare eventuali client inattivi che non mandavano più messaggi.

Rispondi quotando

