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]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
this.connexion=this.serveur.accept();
Ensuite j'instancie un Gestionnaire de client :
[this : mon instance de Serveur ; this.connexion : Socket correspondant au client]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
new ConnexionClient(this,this.connexion);
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
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