Plan
Introduction aux systmes distribus
Principe gnral
Un serveur distribue des calculs aux machines clients
Un client excute son calcul puis renvoie le rsultat au serveur
Architecture client/serveur
Le client demande lexcution dun service ; le serveur ralise le service
Modle Client/Serveur : Communication par messages
Requte : paramtres dappel, spcification du service requis
Rponse : rsultats, indicateur ventuel dexcution ou derreur
10
11
Notion de flux
Un programme a souvent besoin d'changer des informations, que ce soit
pour recevoir des donnes d'une source ou pour envoyer des donnes vers un
destinataire.
- Lecture du clavier
- Affichage sur la console
- Lecture/Ecriture dans un fichier
- Echange de donnes rseaux avec les Sockets
Les changes de donnes sont gres en java par les flux (streams en anglais)
12
Notion de flux
Un flux est une srie d'informations envoy sur un canal de communication.
Lordre dans lequel linformation est transmise est respect.
- Flux de sortie vers lcran pour indiquer une information derreur: System.err
- Flux dentre partir du clavier : System.in
13
Notion de flux
Exemple de lecture du clavier :
import java.io.IOException;
public class Lecture {
public static void main(String[] args) throws IOException{
System.out.println("Entrez un entier");
int n= System.in.read();
System.out.println("Vous avez saisi:" +n);
//affichage du code ASCII
}
}
14
Notion de flux
Il existe des flux de bas niveau et des flux de haut niveau :
- Les flux doctets: Ils transportent des donnes sous forme d'octets.
Les flux de ce type sont capables de traiter toutes les donnes.
- Les flux dcors: Ils transportent des donnes sous forme de type
primitifs, caractres, objets.
15
16
17
Les mthodes principales qui peuvent tre utilises sur un OutputStream sont :
abstract void write (int n) : crit loctet pass en paramtre.
void write (byte[] b) : crit les octets lus depuis un tableau doctets.
void write (byte[] b, int off, int len) : crit les octets lus depuis un tableau
doctets partir dune position donne (off) et sur une longueur donne (len).
void close() : ferme le flux.
18
19
Exercice:
Ecrire une classe Copy qui ralise la copie dun fichier dans un autre.
20
La dcoration de flux
La dcoration est l'art de traiter une srie d'octets avant de les transmettre
l'application demandeuse.
Il existe 4 familles de dcorations
- Data : permet de convertir les bytes en structure primitive (long,
boolean, double...)
- Character : permet de convertir les bytes en texte
- Object : permet de convertir les bytes en structure objet
- Service : buffer, gzip permet d'appliquer des fonctions spcifiques sur
la lecture
21
22
24
//ou en condens:
InputStreamReader in = new InputStreamReader(new
FileInputStream("monFichier.txt"));
25
26
//ou en condens:
OutputStreamWriter out= new OutputStreamWriter(new
FileOutputStream ("monFich.txt"));
27
Pour lire et crire directement des caractres unicode dans un fichier, il est
conseill dutiliser FileReader et FileWriter la place de FileInputStream et
FileOutputStream
28
29
Exercice:
1. Ecrire une classe WriteLog qui permet dcrire des logs. Chaque log
reprsente une ligne dans un fichier. Utiliser une classe Log ayant pour
attributs: la date dcriture, lidentifiant de lcrivain et son commentaire.
2. Ecrire une classe ScanLog qui permet de lire les logs enregistrs.
30