Bienvenue dans cet espace de la matière "Systèmes et Applications Répartis SAR", Travaux Pratiques TPs & Travaux Dirigés TDs.
Enseignants:
Enseignant du Cours: Monsieur Heithem Abbes.
Enseignante des TDs/TPs: Thouraya Louati.
Année Universitaire: 2016/2017 (Premier Semestre)
Section: IF4A / IF4B (Emplois du temps: IF4A / IF4B) (Les listes)
Ingénieurs en Informatique 4ème année.
Faculté des Sciences de Tunis FST Département des Sciences de l'Informatique (lien 2)
Annonce:
Soutenances [Projet Java RMI]
Veuillez assister aux soutenances:
Date :
IF4B : Vendredi 20/01/2017 à partir de 09h.
IF4A : Samedi 21/01/2017 à partir de 09h.
Les soutenances auront lieu au bureau de Si Heithem.
N.B : Veuillez apporter vos machines pour faire la démonstration du projet (la version que vous avez déjà envoyée).
Veuillez publier cette annonce sur le groupe FB.
Annonce publiée le 16/01/2017.
Annonce:
Organisez-vous en binômes pour le projet Java RMI. Chaque binôme (ou monôme) est censé mentionner ses coordonnées sur ce Lien avant Samedi 17/12/2016.
NB : Mentionnez vos noms, prénoms, amphi (IF4A ou IF4B) et le groupe de TPs.
Vous trouvez sur ce tableau le projet.
Date de publication : Samedi 17 Décembre 2016
Date limite de remise du projet : Lundi 2 Janvier 2017 ( à cette adresse thouraya.louati@gmail.com)
Projet
Affichage
Téléchargement
Date
Annonce:
Cette semaine du 12/12 est pour les TPs SAR.
(Groupes) Voir Sheet 4 et 5 du fichier Excel.
Vendredi: IF4B
G2: 09h45 à 11h15 à la salle E (ou C)
G1: 11h30 à 13h00 à la salle E (ou C)
Samedi: IF4A
G2: 08h00 à 09h30 à la salle A
G1: 09h45 à 11h15 à la salle A
Annonce:
1- Vous trouvez les documents qui concernent la correction de l’exercice 1 partie 1 sur le tableau 5.
2- Vous trouvez l'énoncé du TP .1. Les sockets et les documents de la correction de l’exercice 2 (partie 1 et partie 2) (InverserClientUDP.c et InverserServeurUDP.c) sur le tableau 6.
3- Vous trouvez le ServeurUDP et le ClientUDP en Java (y compris des liens vers les vidéos).
Vous trouvez les documents de la correction de l’exercice 1.2 (ClientEchoTCP.c et ServeurEchoTCP.c)
sur le tableau 7.
Vous trouvez aussi le travail à faire pour la séance des TPs.
4- Vous trouvez l'énoncé du TP .2. Les sockets et la correction de l’exercice 2 (partie 3) (InverserClientTCP.c et InverserServeurTCP.c) sur le tableau 8.
5- Vous trouvez l'énoncé du TP .3. Les sockets (Transfert des fichiers.Traitement en parallèle de plusieurs demandes de différents clients) et la correction de l’exercice 3 (ServerRecvFile.c et ClientSendFile.c) sur le tableau 9.
6- Vous trouvez la série n°2 des exercices Java RMI et les codes sources (Reverse et HelloApp) sur le tableau 10.
7- Vous trouvez l'énoncé du TP .4. Java RMI (Fabrique) sur le tableau 11.
8- Vous trouvez l'énoncé du TP .5. Java RMI (Gestionnaire de sécurité, Client et Serveur dynamiques) sur le tableau 12.
9-Vous trouvez l'énoncé du TP .6. Java RMI (Callback, Gestionnaire de sécurité, Client et Serveur dynamiques) sur le tableau 13.
10. Vous trouvez l'énoncé du TP .7. Java RMI (Banque) sur le tableau 14.
Description:
Horaire
Semaines des TDs Semaines des TPs
Séances/ TDs: (déjà faites) Séances/ TPs: (déjà faites)
- IF4B: Vendredi 30/09|21/10 - IF4B: Vendredi 07/10|28/10|11/11|18/11|25
/11|02/12|09/12|16/12
- G2 & G1: 11h30 à 13h00 à la salle I204 - G2: 09h45 à 11h15 à la salle E ou C - G1: 11h30 à 13h00 à la salle E ou C
- IF4A: Samedi 01/10|22/10 - IF4A: Samedi 08/10|29/10|12/11|19/11|26
/11|03/12|10/12|17/12
- G1 & G2: 08h00 à 09h30 à la salle I109 - G2: 08h00 à 09h30 à la salle A
- G1: 09h45 à 11h15 à la salle A
NB : Les salles A et E des TPs sont au premier étage du bâtiment près de la buvette des
étudiants.
Description du cours
Ce cours est composé de deux parties:
- Partie théorique: Connaître les systèmes distribués et les paradigmes utilisés lors de leur conception/
développement: échange de messages (par sockets), appels de procédures distants
(ONC RPC, Java RMI).
(Les pdfs du cours sont disponibles sur cette URL)
- Partie pratique: Pré-requis: Du point de vue pratique, ce cours suppose que l'étudiant maîtrise les langages de
programmation C et Java et l'environnement Linux (voir au bas de cette page quelques
liens de rappel).
Cours: Documents:
1
Type
Nom
Partie1: Introduction aux systèmes répartis
Partie2: Les sockets
Partie3: Les appels de procédure distants
Lien
Partie4: Open Network Computing Remote Procedure Call (ONC RPC)
Partie 5: JAVA RMI
Les fichiers sources .java de l'exemple vu en cours de l'inversement de chaine de caractères.
Le fichier ReadMe.txt donne les commandes nécessaires pour compiler et lancer les programmes client et serveur.
Le même exemple Reverse avec une exportation explicite de l'objet distant et avec un gestionnaire de sécurité pour le serveur d'objets et le client
Volume Horaire Cours: 1h30 par semaine.
TDs & TPs: Documents:
2
Type
Nom
Description du cours
Série 1: Sockets
Taille
64 ko
79 Ko
Affichage
Téléchargement
Date
Pour ceux qui comptent installer Cygwin sous Windows:
3
Type
Nom
Taille
98 ko
78 Ko
89 ko
68 ko
75 ko
69 ko
89 ko
71 ko
71 ko
54 ko
80 ko
110 ko
Affichage
Téléchargement
Date
Pour ceux qui comptent utiliser les technologies de virtualisation sous Windows:
4
Type
Nom
Installation d' Oracle VM VirtualBox
Installation d'une machine virtuelle (Ubuntu) dans VirtualBox
Taille
168 ko
Affichage
Téléchargement
Date
Manuel du programmeur
L'accès aux pages man se fait avec la commande man. Procédez comme suit:
Manuel en Anglais:
louati1@louati1-VirtualBox:~$ man socket
louati1@louati1-VirtualBox:~$ man bind
louati1@louati1-VirtualBox:~$ man connect
louati1@louati1-VirtualBox:~$ man listen
louati1@louati1-VirtualBox:~$ man accept
louati1@louati1-VirtualBox:~$ man send (ou bien $man sendto)
louati1@louati1-VirtualBox:~$ man recv (ou bien $man recvfrom)
louati1@louati1-VirtualBox:~$ man close
Autres détails sont regroupés dans le chapitre 7:
Manuel en Français:
- socket(7) : Interface de programmation des sockets. louati1@louati1-VirtualBox:~$ man 7 socket
- udp(7) : Protocole UDP pour IPv4 louati1@louati1-VirtualBox:~$ man 7 udp
- tcp(7) : Protocole TCP louati1@louati1-VirtualBox:~$ man 7 tcp
Volume Horaire (TD/TP): 1h30 par semaine.
Exercice 1 (Partie 1): UDP "RFC768 " (Source: http://tools.ietf.org/)
5
Type
Nom
Le programme suivant affiche les paramètres qui lui sont passés depuis le Terminal.
Taille
1 ko
Affichage
Téléchargement
Date
prog.c
Figure Client - Serveur (sur le navigateur)
174 ko
6 ko
Le code source du Client
Le code source du Serveur
ClientEcho.c
5ko
955 ko
1199ko
ServeurEcho.c
Travaux Pratiques .1. Les sockets (y compris l’exercice 2 (Partie 1 et 2) du TD):
UDP "RFC768 " (Source: http://tools.ietf.org/)
6
Type
Nom
Énoncé du TP1 ----->
Le code source du Client: InverserClientUDP.c
Le code source du Serveur: InverserServeurUDP.c
Documentation
Taille
7 Ko
6 ko
1058 ko
Affichage
Téléchargement
Date
InverserClientUDP.c
InverserServeurUDP.c
Socket UDP en Java.
Exercice 1 (Partie 2): TCP "RFC793 " (Source: http://tools.ietf.org/)
Travail à faire.
7
Type
Nom
Taille
6 ko
7 ko
1334 ko
Affichage
Téléchargement
Date
Le code source du Client: ClientUDP.java
+ Quelques explications (à tester)
Remarque:
Pour installer OpenJDK7, exécutez la commande suivante dans un terminal (Ceci nécessite Internet) :
• sudo apt-get install openjdk-7-jdk
(Remarque: sudo apt-get update en cas d'erreur, puis, sudo apt-get install openjdk-7-jdk
OU
sudo apt-get upgrade puis, sudo apt-get install openjdk-7-jdk)
Sous Cygwin (Windows): Voici le lien du tuto: lien
Vidéo :
Le code source du Serveur: ServeurUDP.java
+ Quelques explications (à tester)
ServeurUDP.java
Le code source du Client: ClientEchoTCP.c
Le code source du Serveur: ServeurEchoTCP.c
Modification: J’ai ajouté la boucle d’attente de connexion: while(1){socketDialogue = accept……………}
Documentation
ClientEchoTCP.c
ServeurEchoTCP.c
Vous trouvez dans cette documentation les détails de la compilation et de l’exécution et un test à faire (netcat):
(à tester)
Exercice 2.3: Reprendre les questions 1 et 2 en assurant un mode connecté pour écrire:
InverserClientTCP.c et
InverserServeurTCP.c.
Testez cet exercice pour la séance des TPs.
Exercice 4 (1,2): Une simple calculatrice réalisant les opérations de base (+,-,*,/) sur 2 opérandes de type entier. La transmission des données doit être fiable.
1. Ecrire le code du client ClientCalc.c qui prend en arguments : le nom du serveur, le port, les 2 entiers et l’opération désirée.
2. Ecrire le code du serveur ServeurCalc.c qui renvoie le résultat de l’opération.
Travaillez cet exercice pour la séance des TPs.
Travaux Pratiques .2. Les sockets (y compris l’exercice 2 (Partie 3) du TD):
8
Type
Nom
Énoncé du TP2 ----->
Le code source du Client: InverserClientTCP.c
Le code source du Serveur: InverserServeurTCP.c
Taille
6 ko
8 ko
Affichage
Téléchargement
Date
InverserClientTCP.c
InverserServeurTCP.c
Travaux Pratiques .3. Les sockets (y compris l’exercice 3 du TD):
9
Type
Nom
Énoncé du TP3 ----->
Le code source du Client: ClientSendFile.c
Le code source du Serveur: ServerRecvFile.c
Fichier de test: MyFile.txt
Rappel fopen - fgets - fputs
1- Création d'un réseau local: (Ubuntu 12)
à l'aide d'un câble réseau ethernet RJ45 (croisé)
Configuration:
voir figure 1 ---------------------->
et figure 2 ---------------------->
2- Réseau local entre deux VMs (mode Bridge Tuto)
3- Réseau local (routeur wifi), wlan (FST)
4- Réseau wifi ad-hoc
Taille
6 ko
7 ko
1 ko
72 ko
Affichage
Téléchargement
Date
ClientSendFile.c
ServerRecvFile.c
MyFile.txt
Remarque: Pour savoir votre version d’Ubuntu, tapez la commande suivante:
lsb_release –d
ou
cat /etc/lsb-release
Travaux Pratiques .4. Java RMI:
10 Java RMI (Remote Method Invocation)
Type
Nom
Installez le JDK (n'importe quelle version récente). Lien
Sous Cygwin (Windows): Voici le lien du tuto: lien
Série RMI ------------->
Reverse1:
Les fichiers sources de l'inversion d'une chaine de caractères.
Le fichier ReadMe.txt donne les commandes nécessaires pour compiler et lancer les programmes client et serveur.
Vous trouvez aussi des captures d'écran.
ReadMe2.txt
Lancer dans un nouveau terminal la classe
RegistryViewer.java (en parallèle avec le serveur
d'objets et l'annuaire remiregistry) pour voir les
noms des objets dans rmiregistry. ------------------>
Compilation: javac RegistryViewer.java
Exécution: java RegistryViewer localhost 1099
Taille
Affichage
Téléchargement
Date
Remarque: 1099 est le port par défaut sur lequel est lancé rmiregistry
Travaux Pratiques .4. Java RMI:
11 Java RMI (Remote Method Invocation)
(Fabrique)
Type
Nom
Énoncé du TP4 ----->
Exercice 3 (Gestion d'un compte bancaire). ---->
Inversion d'une chaîne de caractères (avec
Factory) ---->
Compétez le travail sur l'exercice 3 (Gestion d'un
compte bancaire avec Factory).
Travaillez 'Compteur avec Factory'.
et la suite des exercices du TP ....
Taille
Affichage
Téléchargement
Date
Travaux Pratiques .5. Java RMI:
12 Java RMI (Remote Method Invocation)
(Gestionnaire de sécurité, Client et Serveur dynamiques)
Type
Nom
Énoncé du TP5 ----->
Inversion d'une chaîne de caractères (avec
Factory) ---->
Taille
Affichage
Téléchargement
Date
Travaux Pratiques .6. Java RMI:
13 Java RMI (Remote Method Invocation)
(Callback, Gestionnaire de sécurité, Client et Serveur dynamiques)
Type
Nom
Énoncé du TP6 ----->
Taille
Affichage
Téléchargement
Date
Travaux Pratiques .7. Java RMI:
14 Java RMI (Remote Method Invocation)
(Banque)
Type
Nom
Énoncé du TP7 ----->
Taille
Affichage
Téléchargement
Date
Liens utiles:
Rappel sur les commandes Linux:
Rappel sur la programmation en Langage C:
Rappel sur la programmation en JAVA:
Forums aux questions:
Linux: http://stackoverflow.com/questions/tagged/linux http://www.unix.com/
Langage C: http://stackoverflow.com/questions/tagged/c
-> Lisez ce guide avant de poser vos questions sur le forum stackoverflow (Respectez toutes les consignes)
Bibliographie:
Book: Distributed Systems: Concepts and Design (5th Edition), George Coulouris, Jean Dollimore, Tim Kindberg,Gordon Blair. 2011.
A lot of success in life is that passion and persistence, of really staying the course, staying working on it, and, not letting go. Not giving up.