Salve a tutti è un bel po' che non scrivo su questo forum.
Ho un problema un po' singolare con un'applicazione client-server in Java.
Ho realizzato un server multithread che riceve connessioni da un client remoto (tipicamente un cellulare GPRS).
Questa socket viene aperta nel momento in cui l'utente comincia a navigare sul web. Il client però non invia nulla al server mentre il server deve aspettare che l'utente raggiunga una certa pagina di un sito web per inviare dei dati.
In pratica il server per inviare i dati deve aspettare un evento (il click su un link da browser) che non è in alcun modo legato alla socket client, per cui il thread si mette in wait().
Quando l'utente (dallo stesso cellulare su cui è aperta la socket) clicca sul link faccio notify() per risvegliarlo.
C'è però il problema che se l'utente si disconnette (chiude la socket client o spegne il cellulare)
non cliccherà mai sul link per cui il thread resta bloccato sulla wait()
Ho bisogno quindi di un sistema per testare se il client è ancora connesso prima di inviare i dati.
è possibile farlo senza che io debba inviare un pacchetto "dummy" sul canale?
Avevo pensato di utilizzare il timeout al metodo wait(), e a quel punto verificare la connessione, ma il problema è che non posso inviare dati se l'utente non è passato per il link.
Come si potrebbe fare?
grazie a tutti...

Rispondi quotando
