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