This commit is contained in:
parent
a96ea4774f
commit
c65d47ade0
2 changed files with 188 additions and 1 deletions
|
@ -1,5 +1,5 @@
|
|||
SUBDIRS = src
|
||||
|
||||
EXTRA_DIST = doc INSTALL README Doxyfile autogen.sh rapport
|
||||
EXTRA_DIST = doc INSTALL README Doxyfile autogen.sh
|
||||
|
||||
|
||||
|
|
187
README
187
README
|
@ -0,0 +1,187 @@
|
|||
|
||||
Programmation répartie - TP2
|
||||
|
||||
1. Description
|
||||
|
||||
Le but de ce TP est de concevoir une implémentation des protocoles
|
||||
ABCAST et CBCAST.
|
||||
|
||||
Il possède les caractéristiques suivantes :
|
||||
* Il est distribué sous la licence [1]GNU General Public License
|
||||
* Il est écrit en C++,
|
||||
* Il implémente ABCAST,
|
||||
* Il implémente CBCAST.
|
||||
|
||||
Cette implémentation utilise trois threads, un "envoyeur de bas
|
||||
niveau" (LowSender), un "recepteur de bas niveau" (LowReceiver) et un
|
||||
"recepteur de haut niveau" (HighReceiver).
|
||||
|
||||
1.1. Auteurs
|
||||
|
||||
Cet exercice a été entièrement réalisé par Glenn ROLLAND
|
||||
<[2]glenux@fr.st> à l'occasion de travaux pratiques du cours de
|
||||
Programmation Répartie du Master 2 Ingénierie Informatique - Systèmes,
|
||||
Réseaux et Internet.
|
||||
|
||||
1.2. Implémentation des protocoles
|
||||
|
||||
J'ai choisi d'écrire un protocole unique Multi-BroadCast Protocol
|
||||
(MBCP) utilisable aussi bien pour envoyer les datagrammes d'ABCAST que
|
||||
de CBCAST.
|
||||
|
||||
1.2.1. Structures des datagrammes
|
||||
|
||||
Le datagramme MBCP se décompose de la façon suivante:
|
||||
+------+-----------+---------+
|
||||
| Type | Timestamp | Message |
|
||||
+------+-----------+---------+
|
||||
|
||||
Dans ce datagrame:
|
||||
|
||||
Type est de type unsigned char et peu prendre les valeurs suivantes:
|
||||
|
||||
'A'
|
||||
Indique l'utilisation du protocole ABCAST
|
||||
|
||||
'C'
|
||||
indique l'utilisation du protocole CBCAST
|
||||
|
||||
une autre valeur
|
||||
indique un protocole inconnu
|
||||
|
||||
Timestamp peut varier en fonction de Type.
|
||||
* Si Type == 'A', alors la structure de Timestamp est la suivante:
|
||||
+------------+-------------+
|
||||
| Site index | Clock value |
|
||||
+------------+-------------+
|
||||
* Si Type == 'C', alors la structure de Timestamp est la suivante:
|
||||
+------------+------------+-------------+
|
||||
| Site_index | Clock_size | Clock_value |
|
||||
+------------+------------+-------------+
|
||||
* Si Type est différent, alors on considère le paquet illisible.
|
||||
|
||||
Site_index est de type unsigned short (16 bits).
|
||||
Il indique l'index du site emetteur. La numérotation des index débute
|
||||
à zéro.
|
||||
|
||||
Clock_size est de type unsigned short (16 bits).
|
||||
Ce champ indique la taille de l'horloge (si celle-ci est vectorielle).
|
||||
|
||||
Clock_value peut varier en fonction de Type.
|
||||
* Si Type == 'A', alors Clock_value est de type unsigned short (16
|
||||
bits)
|
||||
* Si Type == 'C', alors Clock_value est un tableau de valeurs
|
||||
unsigned short (16 bits * Clock_size)
|
||||
|
||||
Message possède la structure suivante:
|
||||
+--------------+--------------+
|
||||
| Message_size | Message_data |
|
||||
+--------------+--------------+
|
||||
|
||||
Message_size est de type unsigned short (16 bits). Cette valeur
|
||||
indique la taille du message.
|
||||
|
||||
Message_data est un tableau de valeurs char (8 bits * Message_size).
|
||||
Ce champ contient le message (qui peut être une estampille).
|
||||
|
||||
2. Pré-requis
|
||||
|
||||
Cet exercice nécessite:
|
||||
* un système compatible unix,
|
||||
* le compilateur GNU GCC (version >= 2.95)
|
||||
* une version récente des GNU Autotools.
|
||||
|
||||
3. Se procurer le sources
|
||||
|
||||
Vous pouvez télécharger la dernière archive des sources, ou bien
|
||||
directement leur version la plus récente sur le dépôt Subversion du
|
||||
projet.
|
||||
|
||||
3.1. L'archive compressée
|
||||
|
||||
Elle est disponible à l'adresse :
|
||||
[3]http://glenux2.free.fr/pub/projets/Programmation_Repartie/TP2/archi
|
||||
ves/
|
||||
|
||||
3.2. Le dépôt Subversion
|
||||
|
||||
Afin d'obtenir les sources les plus à jour, vous pouvez utiliser le
|
||||
logiciel de contrôle de sources Subversion
|
||||
|
||||
$ svn checkout \
|
||||
http://repository.glenux.ath.cx/svn/Cours/M2/Programmation_Repartie/
|
||||
TP2/ \
|
||||
prog-repartie-tp2
|
||||
|
||||
Il n'y a pas de mot de passe, il suffit donc de presser la touche
|
||||
"Entrée" pour l'utilisateur "anonymous", si ce dernier vous est
|
||||
demandé.
|
||||
|
||||
4. Utiliser le logiciel
|
||||
|
||||
4.1. Compilation
|
||||
|
||||
Si vous avez choisi l'archive, commencez par la décompressez.
|
||||
|
||||
$ tar -xzvf prog-repartie-tp2.tar.gz
|
||||
|
||||
Rendez vous ensuite dans le dossier qui vient d'être créé lors de la
|
||||
décompression.
|
||||
|
||||
$ cd prog-repartie-tp2
|
||||
|
||||
Puis lancez la compilation du logiciel:
|
||||
|
||||
$ ./autogen.sh
|
||||
$ ./configure
|
||||
$ make
|
||||
|
||||
4.3. Utilisation
|
||||
|
||||
On supposera que les machines weber, beethoven et mozart font partie
|
||||
du même groupe, que leur ports respectifs pour la reception sont 2300,
|
||||
2330, et 2360.
|
||||
|
||||
4.3.1. ABCAST
|
||||
|
||||
Pour la machine weber, on lancera:
|
||||
|
||||
$ ./dabcast -A -p 2300 -g weber:2300 -g beethoven:2330 -g mozart:2360
|
||||
-i 1
|
||||
|
||||
Pour la machine beethoven:
|
||||
|
||||
$ ./dabcast -A -p 2330 -g weber:2300 -g beethoven:2330 -g mozart:2360
|
||||
-i 2
|
||||
|
||||
Pour la machine mozart:
|
||||
|
||||
$ ./dabcast -A -p 2360 -g weber:2300 -g beethoven:2330 -g mozart:2360
|
||||
-i 3
|
||||
|
||||
4.3.2. CBCAST
|
||||
|
||||
On supposera que les machines weber, beethoven et mozart font partie
|
||||
du même groupe, que leur ports respectifs pour la reception sont 2300,
|
||||
2330, et 2360.
|
||||
|
||||
Pour la machine weber, on lancera:
|
||||
|
||||
$ ./dabcast -C -p 2300 -g weber:2300 -g beethoven:2330 -g mozart:2360
|
||||
-i 1
|
||||
|
||||
Pour la machine beethoven:
|
||||
|
||||
$ ./dabcast -C -p 2330 -g weber:2300 -g beethoven:2330 -g mozart:2360
|
||||
-i 2
|
||||
|
||||
Pour la machine mozart:
|
||||
|
||||
$ ./dabcast -C -p 2360 -g weber:2300 -g beethoven:2330 -g mozart:2360
|
||||
-i 3
|
||||
|
||||
Références
|
||||
|
||||
1. http://www.gnu.org/copyleft/gpl.html
|
||||
2. mailto:glenux@fr.st
|
||||
3. http://glenux2.free.fr/pub/projets/Programmation_Repartie/TP2/archives/
|
Loading…
Add table
Reference in a new issue