Changes between Version 5 and Version 6 of IOC20_T06


Ignore:
Timestamp:
Mar 27, 2020, 3:34:28 PM (5 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • IOC20_T06

    v5 v6  
    7272}}}
    7373
    74 Vous pouvez tester les programmes qui vous sont proposés.
     74Vous 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
    7576Je 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.
    7677Ces 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).
     
    122123
    123124}}}
    124 Vous allez remarquer que lorsque le vous lancer un écrivain (en C ou en Pyhton) rien ne se passe tant que vous n'avez pas lancé un lecteur.
     125Vous 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.
    125126
    126127- Expliquez le phénomène.
     128
     129Regarder aussi le Makefile, et vérifiez que vous le comprenez.
    127130
    128131== 2. Création d'un serveur fake ==
     
    138141- lorsqu'il reçoit un message, il l'affiche et il renvoie dans la fifo f2s la dernière valeur lue sur stdin.
    139142
    140 Vous commencez par récupérer l'[attachment:fake.tgz archive] qui donne un point de départ.
     143Vous commencez par récupérer l'[attachment:fake_cgi.tgz archive] qui donne un point de départ.
    141144{{{
    142145fake
    143146├── Makefile
    144 ├── server.py
     147├── cgi.py
    145148└── fake.c
    146149}}}
    147150
    148151- Dans un premier terminal, compilez et démarrez fake.
    149 - Dans un autre terminal, exécuter ./server.py
    150   - Le programme "server" Python est lancé et arrêté, il se comporte comme se comportera le script CGI.
    151 - Quand le server python 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,
    152155  - il envoie un message sur la fifo s2f
    153156  - puis il lit la fifo s2f et affiche le résultat.
    154157
    155158Vous devez :
    156 1. modifier le nom des fifo pour éviter les conflits (changer p. ex. fw avec vos initiales)
    1571591. 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.
     1601. 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.
    159161
    160162**fake.c**
     
    173175{
    174176    int     f2s, s2f;                                       // fifo file descriptors
    175     char    *f2sName = "/tmp/f2s_fw";                       // filo names
    176     char    *s2fName = "/tmp/s2f_fw";                       //
     177    char    *f2sName = "f2s";                               // filo names
     178    char    *s2fName = "s2f";                               //
    177179    char    serverRequest[MAXServerResquest];               // buffer for the request
    178180    fd_set  rfds;                                           // flag for select
     
    216218import os, time
    217219
    218 s2fName = '/tmp/s2f_fw'
     220s2fName = 's2f'
    219221if not os.path.exists(s2fName):
    220222   os.mkfifo(s2fName)
    221223s2f = open(s2fName,'w+')
    222224
    223 f2sName = '/tmp/f2s_fw'
     225f2sName = 'f2s'
    224226if not os.path.exists(f2sName):
    225227   os.mkfifo(f2sName)
     
    250252        │   ├── led.py
    251253        │   └── main.py
    252         ├── img
    253         │   └── peri.png
    254254        └── index.html
    255255}}}