Sujet du TD2, et TP3/TP5 (le TP4 est le TP test)

Transcription

Sujet du TD2, et TP3/TP5 (le TP4 est le TP test)
Département d’Informatique
TD 2 - ASR5 (ex-LIF12) Système d’Exploitation
Sockets
2016/09/29
I
I.1
Un client/serveur de gestion de logs
But
Le but de ce TD et des deux prochains TPs est de créer un serveur de sauvegarde du
rapport d’activité quotidien des employés dans une entreprise.
Chaque employé doit envoyer tous les jours quelques lignes décrivant ses tâches de la
journée. Le serveur retourne alors un accusé de réception et fait la sauvegarde dans un fichier
au nom de l’employé. À la fin du mois, suite à la requête de l’employé, le serveur met en
forme le rapport et retourne le fichier généré.
I.2
Fonctionnalité
Pour le programme client :
— Propose le choix entre 3 choses :
— envoyer le rapport du jour ;
— demander le rapport du mois reformaté ;
— sortir.
— Il se connecte sur le serveur le cas échéant.
Pour le programme serveur :
— Attend la connexion d’un client à la fois.
— Reçoit les ordres et selon les cas :
— sauvegarde le rapport en l’ajoutant au fichier de l’employé
— formate le rapport et le retourne au client
Vous devrez bien faire attention à ce que le serveur se ferme correctement. Cela même en
cas (probable) d’erreurs dans le code qui provoquent un arrêt brutal.
Au départ le serveur n’a pas besoin de traiter plus d’un client à la fois à priori. Mais
vous pouvez améliorer le logiciel en utilisant la duplication de processus pour permettre cela.
Dans ce cas il faudra de toute façon limiter le nombre de connexions et traiter le cas (voire
l’interdire dans un premier temps) où au moins deux clients différents demandent à ajouter
un rapport dans le même fichier employé.
I.3
Le TD
Q.I.1) - Quelles données le client et le serveur doivent-ils échanger dans chaque cas ? Proposez
un protocole de communication sommaire.
Université Claude Bernard Lyon I
1
Département d’Informatique
Q.I.2) - Le serveur doit lire le port d’écoute depuis la ligne de commande (argv). Donnez le
code correspondant.
Q.I.3) - Donnez le code de la mise en place de la connexion du point de vue du serveur.
Q.I.4) - Donnez le code de la mise en place de la connexion du point de vue client (le nom du
serveur et son port doivent être obtenus depuis la ligne de commande).
Q.I.5) - Pour correctement fermer les sockets même en cas d’erreur, vous devez mettre en place
une fonction appelée automatiquement avant toute terminaison. Comment allez-vous
faire ? Donnez le code.
Université Claude Bernard Lyon I
2

Documents pareils