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 quun 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 dune 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.
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.