tp3 - WordPress.com

publicité
Algorithmique des systèmes et applications réparties
TP3: socket, swing et serveur multi-thread
Exercice 1 : l’objectif de cet exercice est de compter le nombre de clients qui se
connectent sur un serveur. Le modèle de communication utilisé est les sockets TCP et le
traitement coté serveur est réalisé à l’aide d’un thread.
Soit les deux codes suivants (Serveur.java et Client.java) :
import java.io.IOException;
import java.net.*;
public class Serveur {
public static void main(String[] args){
ServerSocket socket;
try {
socket = new ServerSocket(2013);
Thread t = new Thread(new Accepter_clients(socket));
t.start();
System.out.println("Mes clients sont prets ");
} catch (IOException e) {}
}
}
class Accepter_clients implements Runnable {
private ServerSocket socketserver;
private Socket socket;
private int nbrclient = 1;
public Accepter_clients(ServerSocket s){
socketserver = s;
}
public void run() {
try {
while(true){
socket = socketserver.accept(); // attente d'un client
import java.io.IOException;
import java.net.*;
public class Client {
public static void main(String[] args){
Socket socket;
try {
socket = new Socket("localhost",2013);
socket.close();
} catch (IOException e) {}
}
}
Questions :
- Lancez le serveur et lancez le
client plusieurs fois.
- Modifiez le code précédent afin
de limiter le nombre de clients qui
peuvent se connecter à 5.
System.out.println("Le client numero "+nbrclient+ " est connecte");
nbrclient++;
socket.close();
}
} catch (IOException e) {}
}
}
Exercice 2 : l’objectif de cet exercice est de réaliser une application de tchatche, pour cela nous
allons utiliser la bibliothèque swing et les sockets tcp. L’application est réalisée avec une seule
classe qui représente à la fois le client est le serveur. Au lancement de l’application la fenêtre
JFrame suivante est apparue (combinaison de JLabel, JTextField, JPanel, JTextArea, JRadioButton, ...) :
Pour tchatcher il faut lancer deux instances de cette application, une instance pour la première
personne qui doit choisir le bouton Serveur et une instance pour la deuxième personne qui doit
choisir le bouton Client. A l’intérieur de l’application, on peut trouver un code qui ressemble au
suivant :
if (Serveur) {
hostServer = new ServerSocket(port);
socket = hostServer.accept(); // attente client
}
else { // si Client
socket = new Socket(“localhost”, port);
}
Avant la connexion du client (2ème personne, on a la vue suivante) :
Après la connexion du client, les deux personnes peuvent échanger leurs messages :
Téléchargement