Changes between Version 5 and Version 6 of IOC20_T06
- Timestamp:
- Mar 27, 2020, 3:34:28 PM (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
IOC20_T06
v5 v6 72 72 }}} 73 73 74 Vous pouvez tester les programmes qui vous sont proposés. 74 Vous pouvez tester les programmes qui vous sont proposés. Vous ouvrez deux fenêtres sur la même machines. Vous n'êtes pas obligé d'utiliser une machine du réseau enseignement si vous êtes sur Linux. Vous démarrez un lecteur et un écrivain dans l'ordre que vous voulez. Vous serez sans doute amené à changer le nom des fifos si vous êtes sur des machines partagées puis que ces fifos sont créés dans `/tmp`. 75 75 76 Je vous demande de lire les codes en commençant par les programmes python, en répondant aux questions suivantes. Si vous ne connaissez pas le langage [https://python.developpez.com/cours python] c'est le moment de vous y mettre, mais ce n'est rédhibitoire pour aujourd'hui. 76 77 Ces questions ne sont pas exhaustives, l'idée c'est d'avoir une "''compréhension''" de ce qu’est dans le code (vous devrez utiliser Google pour ça). … … 122 123 123 124 }}} 124 Vous allez remarquer que lorsque le vous lancer un écrivain (en C ou en Py hton) rien ne se passe tant que vous n'avez pas lancé un lecteur.125 Vous allez remarquer que lorsque le vous lancer un écrivain (en C ou en Python) rien ne se passe tant que vous n'avez pas lancé un lecteur. 125 126 126 127 - Expliquez le phénomène. 128 129 Regarder aussi le Makefile, et vérifiez que vous le comprenez. 127 130 128 131 == 2. Création d'un serveur fake == … … 138 141 - lorsqu'il reçoit un message, il l'affiche et il renvoie dans la fifo f2s la dernière valeur lue sur stdin. 139 142 140 Vous commencez par récupérer l'[attachment:fake .tgz archive] qui donne un point de départ.143 Vous commencez par récupérer l'[attachment:fake_cgi.tgz archive] qui donne un point de départ. 141 144 {{{ 142 145 fake 143 146 ├── Makefile 144 ├── server.py147 ├── cgi.py 145 148 └── fake.c 146 149 }}} 147 150 148 151 - Dans un premier terminal, compilez et démarrez fake. 149 - Dans un autre terminal, exécuter ./ server.py150 - Le programme " server" Python est lancé et arrêté, il se comporte comme se comportera le script CGI.151 - Quand le serverpython démarre,152 - Dans un autre terminal, exécuter ./cgi.py 153 - Le programme "cgi" Python est démarré et arrêté, il se comporte comme se comportera le script CGI exécuté par le serveur. 154 - Quand le cgi python démarre, 152 155 - il envoie un message sur la fifo s2f 153 156 - puis il lit la fifo s2f et affiche le résultat. 154 157 155 158 Vous devez : 156 1. modifier le nom des fifo pour éviter les conflits (changer p. ex. fw avec vos initiales)157 159 1. modifier le select dans fake pour lire les deux fifos d'entrées stdin et s2f. 158 1. modifier server.py pour lire la valeur lue sur stdin afin que ce que server.py envoi ne soit pas "w hello", mais soit une chaine tapée au clavier. Le but est de "simuler" le comportement du script CGI et de vous obliger à écrire un peu de code Python.160 1. modifier cgi.py pour lire la valeur lue sur stdin afin que ce que cgi.py envoi ne soit pas "w hello", mais soit une chaine tapée au clavier. Le but est de "simuler" le comportement du script CGI et de vous obliger à écrire un peu de code Python. 159 161 160 162 **fake.c** … … 173 175 { 174 176 int f2s, s2f; // fifo file descriptors 175 char *f2sName = " /tmp/f2s_fw";// filo names176 char *s2fName = " /tmp/s2f_fw";//177 char *f2sName = "f2s"; // filo names 178 char *s2fName = "s2f"; // 177 179 char serverRequest[MAXServerResquest]; // buffer for the request 178 180 fd_set rfds; // flag for select … … 216 218 import os, time 217 219 218 s2fName = ' /tmp/s2f_fw'220 s2fName = 's2f' 219 221 if not os.path.exists(s2fName): 220 222 os.mkfifo(s2fName) 221 223 s2f = open(s2fName,'w+') 222 224 223 f2sName = ' /tmp/f2s_fw'225 f2sName = 'f2s' 224 226 if not os.path.exists(f2sName): 225 227 os.mkfifo(f2sName) … … 250 252 │ ├── led.py 251 253 │ └── main.py 252 ├── img253 │ └── peri.png254 254 └── index.html 255 255 }}}