La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

TP N°6: Construction d’un Serveur Multi-Client

Présentations similaires


Présentation au sujet: "TP N°6: Construction d’un Serveur Multi-Client"— Transcription de la présentation:

1 TP N°6: Construction d’un Serveur Multi-Client
Les Threads en Java (Processus Légers)

2 Thread = un fil (d’exécution)
Une méthode pour créer un thread en java, consiste à: Définir la tâche exécutée par le thread Lier la tâche au thread Lancer le thread

3 Classe Thread: un premier exemple
Créer un nouveau projet ThreadExemples (Main Class Cochée)

4 Thread Principal

5 Créer un nouveau thread
Définir la tâche du thread = Créer un objet Runnable Runnable est une interface public interface Runnable { public abstract void run(); } En fait, une interface est une classe abstraite dont toutes les méthodes sont abstraites et dont tous les attributs sont constants (des constantes, voir le mot-clé final). L'interface Runnable doit être implémentée par n'importe quelle classe dont les instances sont destinées à être exécutées par un thread. La classe doit définir une méthode sans argument appelée run. Navigate : go to source

6 Ajouter une classe «Tâche» dans le projet précédent : New / Java Class
La tâche ici = Calcul le Produit de deux entiers

7 public class Tache implements Runnable { int x; int y; Tache(int x,int y) {this.x=x; this.y=y;} //Constructeur public void run(){ // Méthode run() System.out.println(Thread.currentThread().getName()); System.out.println(x+"*"+y+"="+x*y); } }

8 Dans le main: Runnable job = new Tache(5,6); Thread t = new Thread(job); t.setName("t1"); // Optionnel t.start();

9 Créer plusieurs threads:
Ordre choisi par l’ordonnanceur de la JVM

10 Solution À l’arrivée d’un nouveau client, créer un nouveau thread
Notre serveur peut prendre en charge plusieurs clients mais à tour de rôle: Solution À l’arrivée d’un nouveau client, créer un nouveau thread serveur Multi-client ( multi-threaded)

11 Créer un nouveau projet:
Main Tâche du thread

12 Modifions le code du Serveur:
ServerSocket svr = new ServerSocket(5000); while (true) { Socket sClient = svr.accept(); Runnable jobtodo = new TraitReq(sClient); Thread t = new Thread(jobtodo); t.start(); System.out.print ("Le Serveur a créé le thread"+t.getName()+"\n"); }

13 Traitement de la Requête Client
Tâche du thread Traitement de la Requête Client

14 public class TraitReq implements Runnable {
Socket client; TraitReq(Socket client) { this.client = client;} // Constructeur public void run() { // Copier Coller Try { DataInputStream Sin = new DataInputStream(client.getInputStream()); DataOutputStream Sout= new DataOutputStream(client.getOutputStream()); String ch; ch= Sin.readUTF(); while (!ch.equalsIgnoreCase("Fin")){ Sout.writeUTF(ch.toUpperCase()); ch = Sin.readUTF();} client.close();

15 Et Enfin … Lancer le Serveur Multi-Client Lancer plusieurs Clients
Observer l’affichage dans la console côté Serveur


Télécharger ppt "TP N°6: Construction d’un Serveur Multi-Client"

Présentations similaires


Annonces Google