Support de Cours Programmation Repartie
Support de Cours Programmation Repartie
Support de Cours Programmation Repartie
Dr Beman KAMAGATE
E-mail : beman.kamagate@esatic.edu.ci
Tel : 0749137683
VH : 19 H
CM : 9 H
TD: 5 H
TP: 5 H
CONTENU
Applications Client-Serveur :
• La plupart des applications réseaux sont du type
Client-Serveur ;
• Dans ce cadre, le client appelle un “service” auprès
d’un serveur ;
• La dénomination architectures orientées services
existe par ailleurs ; elle désigne principalement les
Services Web.
Exemples :
o Un navigateur web demande une page html à un serveur;
o Un client FTP demande la liste des fichiers et des
répertoires contenus dans un répertoire.
Programmation “classique” vs. Informatique Répartie.
objectifs
Programmation “classique” : En programmation classique
lorsque qu’un programme a besoin d’un service, il appelle
une fonction d’une librairie, une méthode d’un objet, etc.
Probl´ematique
Cr´eer une application r´epartie en utilisant les protocoles
de transport
Application client-serveur :
un serveur fournit un service
un client utilise ce service
Exemples : serveur ftp, www,
ssh, chat . . .
Les communications entre les deux machines ( client et
serveur) doivent être sûres, les donn´ees ne doivent pas se
perdre, et arriver dans le mˆeme ordre d’´emission.
Solution
Client
Etablir un socket
identit´e du serveur : adresse IP, ou nom de la machine
numero port TCP
Creation socket
Pour tester son programme, le serveur peut tourner sur la mˆeme machine que
le client, donc l’identit´e du serveur est 127.0.0.1
Socket
Client SOCKET
Client
Lire des donn´ees depuis un Socket
Le socket fournit un flux d’entr´ee avec la m´ethode
socket . getInputStream()
InputStreamReader stream de
Lecture de chaˆınes = new
caract`eres
InputStreamReader(socket.getInputStream());
getInputStream() : g`ere le flux d’entr´ee du socket
InputStreamReader : convertit un flux binaire en flux de
caract`eres
Socket
Client SOCKET
Client
Lecture de chaˆınes de caract`eres (suite)
SOCKET
Client
Fermeture du socket
socket.close();
Client
Recapitulatif Lecture
import java.io.∗;
import java.net.Socket;
Client SOCKET
Client
Ecrire
writer.print(”message”);
writer.println(”message”);
Socket
SOCKET
Client
Client
Recapitulatif
import java.io.∗;
import java.net.Socket;
socket.close();
}catch (Exception e) {
e.printStackTrace();
}
}
Socket
Client
Flux
Autres flux
BufferedReader, PrintWriter permettent d’´echanger des
chaˆınes de caract`eres, mais ce ne sont pas les seules
classes
permettant d’utiliser les flux avec les sockets.
DataInputStream, DataOutputStream permettent de
manipuler les types primitifs de Java
...
https://www.jmdoudoux.fr/java/dej/chap-flux.htm
Socket
SOCKET
Serveur
Deux sockets :
ServerSocket : ´ecouter et accepter les connexions
Socket : pour communiquer avec le client
Creation d’un ServerSocket sur un port specifique
SOCKET
Serveur
Deux sockets :
ServerSocket : écoute et accepter les connexions
Socket : pour communiquer avec le client
Creation d’un ServerSocket sur un port specifique
Serveur
Serveur
Serveur
Recapitulatif
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
}
Serveur
Socket
Clients multiples
Probl`eme
Lorsque le serveur interagit avec le client, il n’est plus
`a l’´ecoute des autres clients
Il ne peut interagir qu’avec un seul client `a la fois
Ce n’est pas le comportement attendu d’un serveur
Serveur
ServerSocket serverSock = new ServerSocket(5000);
while(true){
Socket clientSocket = serverSock.accept();
Thread t = new Thread(new ClientHandler(clientSocket));
t.start();
}
R´esum
´e
Client
Initialiser le socket
Initialiser les flux d’entr´ee et de sortie
Lire et ´ecrire `a l’aide de ces flux suivant le protocole mis
en place avec le serveur
Fermer le socket
Serveur
Initialiser un socket server et attendre la connexion d’un
client
Communiquer via le socket (cf client)
Fermer le socket server
Clients multiples
Conclusion
Socket : extr´emit´e d’une liaison r´eseau
Facilite la lecture et l’´ecriture de donn´ees sur le r´eseau
En Java classe Socket et ServerSocket
Nous avons vu le mode connect´e en TCP permettant
une transmission suˆre de donn´ees, mais il existe un
mode d´econnect´e en UDP
Clients multiples
Liens
https://docs.oracle.com/javase/tutorial/
networking/sockets/
http:
//www.javaworld.com/article/2077322/core-
java/ core-java-sockets-programming-in-java-a-
tutorial. html