Serveur de message multiconnexion

Contenu du snippet

Voici le script d'un petit serveur de message.
En réponse à une personne du forum pour la gestion de plusieurs connexion en utilisant des Threads.

Source / Exemple :


Voici l'exemple d'un serveur de Message gérant plusieurs connexions

import java.io.*;
import java.net.*;
import java.util.*;

public class ServeurMess {

  private ServerSocket server ;
  private static ServIHM ihm;
  private Socket client ;
  public static int numero_req = 1 ;

  public ServeurMess() {
   try{
      System.out.println("création du \"Socket serveur\"");
      server = new ServerSocket(5000) ;

      while(true) {
        System.out.println("Attente d'une requête");
        client = server.accept() ;
        System.out.println("Requete "+numero_req+" prise en compte");
        //Utilisation du ServeurRequete
        ServeurRequete requet=new ServeurRequete(client,ihm,numero_req);
        requet.start();//Lancement du serveur de requête
        System.out.println("Traitement de la requête : "+numero_req);
                    numero_req++ ;
    	     }
    	}
catch (Exception e) { System.out.println(e) ; }
  }
  public static void main(String[] args) {
  	  ihm = new ServIHM("Serveur d'affichage");
  ServeurMess serveur = new ServeurMess();
  }
}

Classe ServeurRequête

Il s'agit d'un serveur qui gère la connexion avec un seul client.

Voici son code :

import java.io.*;
import java.net.*;
import java.util.*;

public class ServeurRequete extends Thread  {

  private Socket client;
  private ServIHM ihm;
  private int num_requete;

  //Paramètrage du serveur de requête
  public ServeurRequete(Socket client, ServIHM ihm, int number ) {
    	this.client=client;  //Connexion avec le client
this.ihm=ihm;  //Indique la fenêtre d'écriture des messages
this.num_requete=number;  //Indique le numero du client
  }
  public void run() {//Methode permettant de lancer le thread
try{
      BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())) ;
      //Affichage dans la fenêtre du serveur la
      ihm.affiche("Requete("+num_requete+"): Ouverture") ;
      //Affichage des messages envoyés par le client
 	      for(String input = in.readLine();input!=null;input = in.readLine()){
   ihm.affiche("Requete("+num_requete+"):"+input);}
}
catch (Exception e) {System.out.println("erreur");}//Detection de la deconnexion du client
ihm.affiche("Requete("+num_requete+"): Fermeture") ;
   }
}

Conclusion :


Explication de ses classes combinées :

Dès qu’un client se connecte sur le serveur de type ServMess, ce dernier accepte la communication puis lui affecte un serveur de requête et se remet en attente d’une requête. Le serveur de requête affichera les messages du clients dans la fenêtre de lecture du serveur de messsage et se charge en même tant de détecter la déconnexion de son client.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_pilote)