Skip to content

Commit c10d3ef

Browse files
authored
Update TP10.md
1 parent f7bc780 commit c10d3ef

File tree

1 file changed

+6
-15
lines changed

1 file changed

+6
-15
lines changed

CUPGE/L2/SDD/TP/TP10.md

+6-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
2-
31
# TP 10 : un middleware pour les connecter tous !
42

53
## 1. Introduction
@@ -9,7 +7,7 @@ Il s’agit d’un modèle de communication **compatible avec la programmation
97
Par opposition à certains autres bus logiciels, ivy ne se fonde pas sur un serveur central ou un annuaire qui permet de router les demandes d’un agent. Au lancement, tous les agents se présentent à un point de rendez-vous, le reste est transparent pour le programmeur !
108
En fait, le rôle d’ivy est **principalement d’établir une convention de communication entre applications**. Les messages sont échangés **sous une forme textuelle**, et la sélection des messages récupérés ou non par les agents est basée sur les expressions rationnelles (*regexp* en anglais ; famille de notations compactes et puissantes pour décrire certains ensembles de chaînes de caractères).
119

12-
**A quoi cela peut-il bien servir ?** Bien que limité *à des échanges de messages textuels*, ce principe permet de prototyper très rapidement des applications hautement interactives (en ré-utilisant des agents déjà développés) voire de concevoir des systèmes adaptés spécifiquement aux besoins d’une personne, tout cela indépendamment du système.
10+
**A quoi cela peut-il bien servir ?** Bien que limité à des échanges de messages textuels, ce principe permet de prototyper très rapidement des applications hautement interactives (en ré-utilisant des agents déjà développés) voire de concevoir des systèmes adaptés spécifiquement aux besoins d’une personne, tout cela indépendamment du système.
1311
Par exemple, pour un système qui aurait à afficher du texte sur un écran, on peut très facilement remplacer cet affichage par un synthétiseur vocal sans faire aucun changement au cœur du système, qui se contenterait d’envoyer sur le bus de l’information à donner aux utilisateurs.
1412

1513
Les bibliothèques ivy sont disponibles sur différents systèmes d’exploitation (Sun Solaris, Linux, Win*, WinCE, Mac OS, Android, …) pour plusieurs langages de programmation (C, C++, C#, Java, Perl, Perl-Tk, Tcl, Tcl-Tk, Ada, Python, O-Caml, COM, VBA, Adobe Flash, …). [cf. **https://github.com/truillet/ivy**]
@@ -28,11 +26,9 @@ Cela revient ici à allouer de la mémoire pour l’objet qui va se connecter au
2826
```c
2927
IvyInit ("IvyTranslater", "Hello le monde", 0, 0, 0, 0);
3028
```
31-
3229
Ici, l’agent apparaîtra sur le bus sous le nom de **IvyTranslater** et enverra le message *Hello le monde* dès qu’il sera connecté.
3330
3431
### 2.2 connexion
35-
3632
Le bus ivy se connecte sur un port d’une adresse IP (ou de broadcast) du réseau local : c’est le point de rendez-vous de tous les agents.
3733
*L’adresse ivy* en elle-même se divise en 2 parties : **adresse_IP** et **adresse_port**
3834
@@ -47,7 +43,6 @@ Le choix du port n’a pas d’importance particulière à partir du moment où
4743
```c
4844
IvyStart ("127.255.255.255:2010");
4945
```
50-
5146
Ivy est lancé sur le réseau à l’adresse 127.255.255.255 sur le port 2010.
5247

5348
### 2.3 envoi et réception de messages
@@ -58,7 +53,6 @@ L’envoi de messages est extrêmement simple : il suffit de préparer la chaî
5853
strcpy(arg, "Robert") ;
5954
IvySendMsg ("Bonjour %s", arg);
6055
```
61-
6256
Le message *Bonjour Robert* est envoyé sur le bus.
6357
6458
#### 2.3.2 abonnement et réception d’un message
@@ -67,16 +61,14 @@ Pour recevoir des messages du bus, il est nécessaire de s’abonner à des *pat
6761
```c
6862
IvyBindMsg (HelloCallback, 0, "^Hello (.*)");
6963
```
70-
71-
Tous les messages de la forme « Hello *quelque chose* » seront traités par la fonction *HelloCallback*.
64+
Tous les messages de la forme "Hello *quelque chose*" seront traités par la fonction *HelloCallback*.
7265

7366
### 2.4 fermeture de la connexion
7467
Enfin la fermeture du bus permet de clore proprement l’échange de données. En voici encore un exemple :
7568

7669
```c
7770
IvyStop();
7871
```
79-
8072
L’agent se déconnecte du bus logiciel.
8173

8274
### 2.5 attente des événements
@@ -113,7 +105,7 @@ gcc Ecoute.c libivy.a libprce.a -o Ecoute
113105
```
114106

115107
Tapez maintenant "./Ecoute"
116-
Ouvrez maintenant un terminal et tapez *ivyprobe '^(.*)'*. Envoyez la commande via *ivyprobe* **Hello tout le monde**. Que se passe-t-il ?
108+
Ouvrez maintenant un terminal et tapez ivyprobe '^(.*)'. Envoyez la commande via *ivyprobe* **Hello tout le monde**. Que se passe-t-il ?
117109
Recommencez en modifiant la commande envoyée.
118110
Envoyez maintenant la commande **Bye**. Que se passe-t-il ?
119111
Analysez le code d’*Ecoute.c*. Essayez de suivre le cheminement de la réception d’un message à sa réémission.
@@ -138,7 +130,7 @@ Sous Windows 10, sous pouvez utiliser le serveur X [VcXsrv](https://sourceforge.
138130

139131
```console
140132
export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0
141-
export LIBGL\_ALWAYS\_INDIRECT=1
133+
export LIBGL_ALWAYS_INDIRECT=1
142134
```
143135

144136
Téléchargez [ivyGUI.zip](https://github.com/truillet/ivy/blob/master/code/ivyGUI.zip). Dézippez le. Une fois ce fichier sur votre répertoire courant, tapez la commande suivante dans votre console :
@@ -162,17 +154,16 @@ Remplissez les champs et appuyez sur **Multiplie**.
162154
Dans ivyprobe, vous devriez voir apparaître une commande du style de celle présentée ci-dessous
163155

164156
```console
165-
ivyGUI Champs1.content=champ\_0-**x** :champ_1-**y**:
157+
ivyGUI Champs1.content=champ_0-**x** :champ_1-**y**:
166158
```
167-
168159
**x** et **y** sont les nombres entrés dans l’interface graphique
169160

170161
Modifier votre programme *multiplie.c* de telle manière qu’il s’abonne au message précédent et renvoie la commande suivante :
171162

172163
```console
173164
ivyGUI CreerTexte=Resultat -> **z**:ITALIC:14
174165
```
175-
**z** est le résultat de la multiplication de x par y
166+
**z** est le résultat de la multiplication de **x** par **y**
176167

177168
[^1]: Les ports 1 à 1024 sont réservés par le système pour les services *bien connus* (well known ports) comme http (port 80), ftp (port 21), ...
178169
[^2]: Voir **https://medium.com/@japheth.yates/the-complete-wsl2-gui-setup-2582828f4577**

0 commit comments

Comments
 (0)