Bonsoir,
Je m'intéresse actuellement à l'utilisation des sockets en java, dans le but d'écrire de petites applis client/serveur.
Vu qu'il peut y avoir plusieurs clients et que les communications se font à l'initiative de l'un ou l'autre, je dois avoir recours à des threads pour gérer l'ensemble.
Pour que l'exemple sur lequel je travaille reste simple pour le moment, j'utilise un Scanner avec nextLine pour faire un chat et lire les entrées utilisateur. Le problème c'est que je n'arrive pas à interrompre mon thread quand une entrée clavier est attendue chez un client...
En gros, côté client j'ai le thread classique du main qui en instancie deux autres : un pour la réception de messages en provenance du serveur, qui se charge de les traiter et éventuellement de les afficher (et donc qui attends sur readLine), et un autre qui se charge des entrées utilisateur, avec le fameux Scanner, et qui les envoie au serveur (et donc qui attend sur nextLine).
Il peut arriver que le serveur envoie un message au client pour lui dire de se déconnecter (parce que le serveur va fermer, etc.), du coup il faut que je tue les threads associé au client pour que ca marche.
Or je ne vois pas comment tuer le thread chargé de l'envoi des messages et qui patiente sur son "nextLine". J'ai essayé interrupt ou de close le scanner comme j'ai pu le lire ailleurs, mais sans succès.
Quelqu'un a une idée ?
Merci
Partager