Durée 3h. Les documents de cours et codes sources des TP sont autorisés.
Vous devez commencer par mettre en place vos machines virtuelles. Attention, il y une nouvelle machine appelée client2.
bruno@licinfo1:/usr/local/vbox/vdi$ ./managevirtualmachines.sh clonemaster client2 bruno@licinfo1:/usr/local/vbox/vdi$ ./managevirtualmachines.sh create client2
mettez all à la place de client2
si vous refaites toutes les machines.
remove all
bruno@maitinfo3:/usr/local/vbox/vdi$ ./managevirtualmachines.sh remove all
bruno@maitinfo3:/usr/local/vbox/vdi$ rm /usr/local/vbox/travail/VOTRELOGIN*.vdi
rm -r ~/.VirtualBox rm -r ~/VirtualBox\ VMs/
dhclient eth0
ou dchlient eth1
Vous donnerez les réponses au trois questions dans le fichier exo1.txt
ping -s 3200 -c 1 server
sur la machine client
.
Créer les fichiers suivants testPush.txt
à la racine de votre compte sur la machine hôte, et testPull.txt
dans le répertoire ICI
à la racine de votre compte sur la machine hôte. Créer un répertoire LABAS à la racine du compte user de la machine client et une répertoire ENCORE dans le répertoire /tmp de la machine client.
Vous donnerez la liste des commandes les plus concises possibles qui répondent aux questions suivantes dans le fichier exo2.txt
.
testPush.txt
dans le répertoire LABAStestPush.txt
dans le répertoire ENCOREtestPull.txt
dans le répertoire ICI. client2
puisse se connecter en tant que root sur la machine client
.ls
en tant que root sur la machine client
.
Vous mettrez vos réponses dans le fichier exo3.txt
.
Ecrire un client (exo4client.py) et un serveur (exo4serveur.py) python en suivant le protocole :
Les échanges d’entiers doivent se faire directement sous forme binaire et pas via des chaînes de caractères.
Ecrire une serveur qui fonctionne comme une calculette à pile commandée avec un protocole texte au dessus de TCP : - si il reçoit un nombre, il l’empile - si il reçoit un code opération binaire : ADD, SUB, MUL, DIV il remplace les deux nombres en sommet de pile par le résultat. ATTENTION, il doit avoir au moins deux nombres sur la pile. - si il reçoit une opération unaire : NEG il remplace le nombre en sommet de pile par le résultat ATTENTION, il doit avoir au moins un nombre sur la pile. - si il reçoit RESET la pile est vidée - si il reçoit PEEK le dernier est renvoyé sans être dépilé - si il reçoit POP le dernier nombre est dépilé et envoyé
Par exemple, l’échange suivant (le texte après est un commentaire et ne fait pas partie de l’échange) : >3 le client envoie 3, le serveur empile 3 [3]
>4 //le serveur empile 4 [4,3] >2 //le serveur empile 2 [2,4,3] >ADD // [6,3] >MUL // [18] >PEEK 18 // [18] >POP 18 // []
Un simple telnet pourra être utilisé comme client.
Ajouter des réponses du serveur en cas d’erreur. Par exemple,
>ADD Pas assez de nombres. >3 // [3] >NEG //[-3] >ADD Pas assez de nombres.
Ecrire le version multiclients du serveur de l’EXO4 (exo4serveurMULTI.py) qui accepte plusieurs clients en parallèle chacun ayant sa propre somme. Vous êtes libre de l’approche.