Faculté des Sciences de Monastir Développement d’application réparties
TP N°3 : Sockets TCP – gestion plusieurs clients
Objectifs du TP :
Ce TP a pour objectif de manipuler la communication entre plusieurs clients et un serveur.
Gestion plusieurs clients
• Java offre nativement un mécanisme permettant de gérer des flux d'exécution parallèle : Les
threads.
• Rappel différence processus/thread :
-Le processus est créé comme une copie d'un processus existant
-Deux processus distincts avec leur mémoire propre
• Le thread s'exécute au sein d'un processus existant
-Nouveau flux d'exécution interne
-Partage des données du processus
1
[Link]@[Link]
Faculté des Sciences de Monastir Développement d’application réparties
Exercice :
Serveur :
package ex1;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class Server extends Thread{
int nbClients;
public void run() {
try {
ServerSocket ss =new ServerSocket(1239);
[Link]("Bonjour ");
while(true) {
Socket s = [Link]();
++nbClients;
new Conversation(s,nbClients).start();
}
}catch(IOException e) {
[Link]();
}
}
class Conversation extends Thread{
private Socket socket;
private int numClient;
public Conversation(Socket socket, int num) {
super();
[Link] = socket;
[Link]= num;
}
public void run() {
try {
InputStream is = [Link]();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
OutputStream os = [Link]();
PrintWriter pw = new PrintWriter(os,true);
String IP = [Link]().toString();
[Link]("Connexion du client numero "+ numClient+ " IP =
"+IP);
[Link]("Bonjour , vous etes le client numero "+numClient);
while(true) {
String req;
while((req= [Link]())!=null) {
[Link](IP + "a envoyé "+req );
2
[Link]@[Link]
Faculté des Sciences de Monastir Développement d’application réparties
String rep = "Size = "+[Link]();
[Link](rep);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
[Link]();
}
}
}
public static void main(String[] args) {
new Server().start();
3
[Link]@[Link]