Bonjour,
Je m'excuse d'avance pour le titre peu clair (si quelqu'un a une idée). J'ai un petit problème sur mon serveur en Java. J'ai une classe ConnectSocket qui accepte ou refuse les connections en fonction de tests passés dans la base de données,... Cette classe ne fait rien d'autre que gérer les nouvelles connections.
Pour ce faire, je reçois des objets à partir des clients et ces objets contiennent les login, password,... Pour faire rapide, on va dire que je récupère les InputStream et OuputStream du socket pour pouvoir exécuter ces tests.
Si la connexion est refusée, j'envoie un message avec l'explication du refus et si la connexion est acceptée, je crée de nouveaux objets Client par exemple et dans cette classe, je gère le client (envoi/réception de messages de ce client). Pour le créer, j'ai un constructeur qui prend en paramètre le login, password et le socket.
Voici le problème, dans ConnectSocket, je réinitialise les objets Socket, InputStream, OutpuStream pour la prochaine connexion (donc j'utilise la méthode .close() de ces différents objets après avoir créé le client). Une fois que cela est fait, je lance un thread avec le client. Le thread récupère les InputStream et OutputStream du socket. Mais il me lance une IOExecption qui me dit que le socket est fermé.
J'ai beau vérifier dans mon code, je ne ferme pas le socket dans ConnectSocket avant de créer mon objet Client et dans l'application client, le socket est toujours ouvert. Dans le constructeur du client, quand je fais socket.toString(), il m'affiche bien l'ip de la machine connectée.
Le socket est bien récupéré mais je n'arrive plus à ouvrir les InputStream,... dois-je aussi les faire passer en paramètre du Client? Pourquoi ne puis-je pas les re-récupérer après?
Merci d'avance pour vos lumières.![]()
Partager