0% ont trouvé ce document utile (0 vote)
25 vues4 pages

TP2socket Threads

Transféré par

meryemouzahra2408
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
25 vues4 pages

TP2socket Threads

Transféré par

meryemouzahra2408
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TP 2 : socket threads

Exercice1
Exécuter le programme ServerMT multithread puis tester le en utilisant un client
telnet adresseDuServeur 49999
import [Link].*;
import [Link].*;
public class ServerMT extends Thread{
int numcl;
public static void main(String [] s){
ServerMT sm=new ServerMT();
[Link]();
}
public void run(){
ServerSocket ss;
Socket s;
Conversation conv;
try{
ss=new ServerSocket(49999);
while(true){
s=[Link]();
++numcl;
conv=new Conversation(s,numcl);
[Link]();
}
}
catch(Exception e){}
}
public class Conversation extends Thread{
private Socket socket;
private int numero;
public Conversation(Socket s,int n){
super();
[Link]=s;
[Link]=n;
}
public void run(){
try{
BufferedReader in = new BufferedReader(new
InputStreamReader([Link]()));
PrintWriter out =new
PrintWriter([Link](),true);
String IPA=[Link]().toString();
[Link]("Conversation avec le client numero "
+[Link]+ "et d'adresse:"+IPA);
while(true){
String req=[Link]();
[Link]("le client numero
"+[Link]+"d'adresse "+IPA+" a envoyé la requete "+ req);
if(req!=null){
String rep="la votre réponse à votre
requete est de longueur:"+[Link]();
[Link](rep);
[Link]("le serveur a envoye la
reponse "+rep+" au client numero "+[Link]+ " et d'adresse"+IPA);
}
}
}catch(Exception e){}
}
}
}

TP SOCKETS A. EL FERGOUGUI
Exercice 2
En se basant sur les deux programmes ServeurThread et ClientThread suivant
Programme [Link]
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link].*;

public class ServeurThread {


public static void main(String[] args){
ServerSocket socket;
try {
socket = new ServerSocket(9999);
[Link]("Le serveur est à l'écoute du port:" +[Link]());
Thread t = new Thread(new Accepter_clients(socket));
[Link]();
[Link]("Mes clients sont prêts !");

} catch (IOException e) {
[Link]();
}
}
}
class Accepter_clients implements Runnable {
private ServerSocket socketserver;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
private int nbrclient = 1;
public Accepter_clients(ServerSocket s){
socketserver = s;
}
public void run() {
try {
while(true){
socket = [Link]();
out = new PrintWriter([Link]());
[Link]("Vous êtes connecté et vous êtes le client numéro:"+nbrclient);
[Link]();
[Link]("Le client numéro "+nbrclient+ " d'adresse:
"+[Link]().getHostAddress()+" sur le port: "+[Link]()+ " est connecté !");
nbrclient++;
[Link]();
}
} catch (IOException e) {

[Link]();
}
}
TP SOCKETS A. EL FERGOUGUI
}

Programme [Link]
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link].*;

public class ClientThread {

public static void main(String[] args){


BufferedReader in; PrintWriter out;
Socket socket;
try {
socket = new Socket([Link](),9999);
[Link]("Demande de connexion");
in = new BufferedReader (new InputStreamReader ([Link]()));
String message_distant = [Link]();
[Link](message_distant);
[Link]();
} catch (IOException e) {

[Link]();
}
}
}
Vous pouvez exécuter le programme ClientThread sur plusieurs Clients

Questions
1. Modifier le programme ServeurThread de telle sorte qu'il envoi au client la date connexion du client
: utiliser la classe Date : new Date().toString()
2. Modifier les deux programmes de telle sorte que le client envoi une commande système que le
serveur doit interpréter et répondre.
l'interprétation d'une commande système se fait comme suite:
BufferedReader laCommande;
String uneLigne,lignes="";
TP SOCKETS A. EL FERGOUGUI
try {
Process p = [Link]().exec(commande); //commande a executer
[Link]();//si l'application doit attendre à ce que ce process fini
// on recupere le resultat de la commande dans un BuffereReader
laCommande = new BufferedReader (new InputStreamReader ([Link]()));
// on lit le résultat de la commande ligne par ligne
do{
uneLigne = [Link]();
if(l!=null) {
// là il faut envoyer la ligne uneLigne au client
lignes+=uneLigne+"\n";
}
} while(uneLigne!=null);
// toutes les lignes de la commande sont dans la chaine lignes
}catch(Exception e) {
[Link]("erreur d'execution " + cmd + [Link]());
}

TP SOCKETS A. EL FERGOUGUI

Vous aimerez peut-être aussi