Vous êtes sur la page 1sur 4

U NIVERSITE´ DE J ENDO UBA

I NSTITUT S UP E´ RIEUR DE L’I NF ORMATIQUE DU K EF

Révision

Matie`re : Développement d’applications réparties Niveau : 3eme LSI


Responsable : Hanen Samaali A U : 2023 / 2024

Exercice 1 :
créer trois threads qui affichent les messages "Bonjour", "Salut" et "Hello, World". Ces
threads doivent être exécutés en parallèle, mais vous devez utiliser la priorité des threads
pour contrôler l'ordre dans lequel les messages sont affichés.

1. Première solution :

class MonThread extends Thread {


private String message;

public MonThread(String message) {


this.message = message;
}

public synchronized void run() {


System.out.println(message);
}
}

class ExempleTroisThreadsPriorites {
public static void main(String[] args) {
MonThread thread1 = new MonThread("Bonjour");
MonThread thread2 = new MonThread("Salut");
MonThread thread3 = new MonThread("Hello, World");

thread1.setPriority(Thread.MIN_PRIORITY); // Priorité minimale (1)


thread2.setPriority(Thread.NORM_PRIORITY); // Priorité normale (5)
thread3.setPriority(Thread.MAX_PRIORITY); // Priorité maximale (10)

thread3.start(); // Démarrer le troisième thread (priorité maximale)


thread1.start(); // Démarrer le premier thread (priorité minimale)
thread2.start(); // Démarrer le deuxième thread (priorité normale)
}
}

1
2. Deuxième solution :

class MonRunnable implements Runnable {


private String message;

public MonRunnable(String message) {


this.message = message;
}

public void run() {


System.out.println(message);
}
}

public class ExempleTroisThreadsPriorites {


public static void main(String[] args) {
MonRunnable runnable1 = new MonRunnable("Bonjour");
MonRunnable runnable2 = new MonRunnable("Salut");
MonRunnable runnable3 = new MonRunnable("Hello, World");

Thread thread1 = new Thread(runnable1);


Thread thread2 = new Thread(runnable2);
Thread thread3 = new Thread(runnable3);

thread1.setPriority(Thread.MIN_PRIORITY); // Priorité minimale (1)


thread2.setPriority(Thread.NORM_PRIORITY); // Priorité normale (5)
thread3.setPriority(Thread.MAX_PRIORITY); // Priorité maximale (10)

thread3.start(); // Démarrer le troisième thread (priorité maximale)


thread1.start(); // Démarrer le premier thread (priorité minimale)
thread2.start(); // Démarrer le deuxième thread (priorité normale)
}
}

Exercice 2 :

Créez un programme client-serveur en utilisant des sockets UDP. Le client envoie un


message au serveur, qui le reçoit, le convertit en majuscules, puis renvoie la réponse au
client.
1. Class Serveur :

2
import java.net.*;
import java.io.*;

public class ServeurUDP {


public static void main(String[] args) {

try {
DatagramSocket socket = new DatagramSocket(9876); // Créez un socket UDP
sur le port 9876

while (true) {
byte[] receiveData = new byte[1024];

DatagramPacket receivePacket = new DatagramPacket(receiveData,


receiveData.length);
socket.receive(receivePacket); // Attend la réception d'un paquet

String message = new String(receivePacket.getData(), 0,


receivePacket.getLength());

System.out.println("Message reçu du client : " + message);

String response = message.toUpperCase(); // Convertit le message en


majuscules
byte[] sendData = response.getBytes();

InetAddress clientAddress = receivePacket.getAddress();


int clientPort = receivePacket.getPort();
DatagramPacket sendPacket = new DatagramPacket(sendData,
sendData.length, clientAddress, clientPort);
socket.send(sendPacket); // Envoie la réponse au client
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}

}
}

2. Class Client

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

public class ClientUDP {


public static void main(String[] args) {

try {
DatagramSocket socket = new DatagramSocket(); // Créez un socket UDP sans
spécifier de port

InetAddress serverAddress = InetAddress.getByName("localhost"); //


Adresse du serveur
int serverPort = 9876; // Port du serveur

String message = "Bonjour, serveur!";


byte[] sendData = message.getBytes();
3
DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length,
serverAddress, serverPort);

socket.send(sendPacket); // Envoie le message au serveur

byte[] receiveData = new byte[1024];


DatagramPacket receivePacket = new DatagramPacket(receiveData,
receiveData.length);
socket.receive(receivePacket); // Attend la réponse du serveur

String response = new String(receivePacket.getData(), 0,


receivePacket.getLength());
System.out.println("Réponse du serveur : " + response);
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

Vous aimerez peut-être aussi