Bonjour,
je suis entrain de programmer une application de chat client/serveur . J'ai fait une version avec un simple client qui peut se connecter au serveur (qui marche ) Et je veux maintenant faire cette application pour pouvoir connecter plusieurs clients simultanément (un thread pour chaque client connecté : un gestionnaire de client) .
Bon voilà comment ça se passe :
J'ai le serveur qui attend une connexion d'un client :
[ServerSocket serveur ; Socket connexion]
Ensuite j'instancie un Gestionnaire de client :
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.connexion=this.serveur.accept();
[this : mon instance de Serveur ; this.connexion : Socket correspondant au client]
Dans ma classe ConnexionClient je commence par créer les flux d'entrée/sortie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part new ConnexionClient(this,this.connexion);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public void creationFlux(){ try{ this.entree= new ObjectInputStream(this.connexion.getInputStream()); this.sortie= new ObjectOutputStream(this.connexion.getOutputStream()); this.sortie.flush(); this.srv.ajouterMessage("Le serveur à initialiser ses flux de communication avec le client."); } catch(Exception e){ Fenetre.warning("Impossible de créer les flux de communication."); } }
Ensuite j'essaye de lire un message qui doit forcément arriver (en faite le client lors de sa connexion doit forcément envoyer un message qui contient son pseudonyme ) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part this.pseudo=(String) this.entree.readObject();
MAIS une exception est levée à ce moment ! Mon serveur qui accepte une unique connexion fait les mêmes étapes (un unique socket client et pas d'instanciation de connexionClient et la création des flux dans la classe Serveur ) et ça marche très bien . Savez-vous comment remedier à cela ?
Merci
Partager