• Aucun résultat trouvé

PR6 – Programmation réseaux TP no 8 : Processus légers et verrous en C

N/A
N/A
Protected

Academic year: 2022

Partager "PR6 – Programmation réseaux TP no 8 : Processus légers et verrous en C"

Copied!
2
0
0

Texte intégral

(1)

L3 Informatique Année 2014-2015

PR6 – Programmation réseaux

TP n

o

8 : Processus légers et verrous en C

Exercice : Un client et un serveur pour un service de tuteurs

On souhaite programmer un serveur et un client afin de gérer un ensemble de tuteurs disponibles pour aider, à la demande, des étudiants.

Le serveur devra donc maintenir à jour une liste chaînée de tuteurs disponibles, où un tuteur est représenté par son identifiant et sa discipline.

1. Le serveur attend les messages des clients sur son port. Les messages peuvent être de 5types :

- dispsignifie que le client demande la liste des tuteurs disponibles. Le serveur renvoie donc au client cette liste. Pour ce faire, il commence par envoyer au client un premier message contenant juste le nombre n d’éléments de la liste suivi du caractère ! :

<n>!. Puis, il envoie ensuite n messages du type :<identifiant> <discipline>!.

Afin que la liste ne change pas de taille entre le moment où sa taille est envoyée au client et le moment où la liste est transmise, vous commencerez par effectuer une copie de la liste en utilisant le mécanisme de vérouillage, puis vous enverrez au client le nombre d”éléments de la liste copiée, ainsi que la liste copiée ;

- get <id>signifie que le client demande l’aide du tuteur d’identifiantid. Le serveur lui retourne l’identifiant du tuteur si celui-ci est disponible et le retire de la liste des tuteurs disponibles. Sinon le serveur renvoie le message d’erreur erreur;

- help <disc> signifie que le client demande un tuteur de la discipline disc. S’il y a un tuteur de cette discipline disponible, le serveur renvoie au client l’identifiant de ce tuteur et le retire de la liste des tuteurs disponibles. Sinon le serveur renvoie le message d’erreur erreur;

- add <id> <disc> signifie que le client rend disponible le tuteur d’identifiant id rattaché à la discipline disc. Le serveur ajoute ce tuteur à la liste des tuteurs disponibles ;

- quitsignifie que le client demande à se déconnecter. Le serveur ferme donc la socket de communication avec ce client.

Le serveur doit pouvoir gérer plusieurs clients en parallèle. Vous utiliserez donc des processus légers.

2. Le client se connecte au serveur et lui envoie des requêtes. Il interagit avec l’utilisateur via un terminal. Sur ce terminal, un prompt ($) invite l’utilisateur à entrer sa nouvelle requête tant que celui-ci ne demande pas à se déconnecter et le client y affiche les réponses. Si la requête est :

- disp le client affiche l’identifiant et la discipline de chaque tuteur disponible ; - get <id> ouhelp <disc> alors le client affiche l’identifiant du tuteur affecté s’il y

en a un. Sinon il affiche un message d’erreur ;

- add <id> <disc> alors le client affiche le message Merci!; - quit alors le client ferme sa socket et termine.

1

(2)

L3 Informatique Année 2014-2015

Attention, il faudra bien veiller à ce que la liste des tuteurs disponibles soit la même pour tous les clients.

Par ailleurs, deux clients peuvent demander simultanément de modifier la liste des tu- teurs disponibles. Pensez à utiliser le mécanisme de verrouillage (mutex), pour éviter les réponses incohérentes du serveur.

2

Références

Documents relatifs

S’il y a un tuteur de cette discipline disponible, le serveur renvoie au client l’identifiant de ce tuteur et le retire de la liste des tuteurs disponibles.. Sinon le serveur renvoie

Dans chacun des trois exercices ci-dessous, il s’agit d’écrire un serveur qui reçoit une image sous une certaine forme, la transforme en niveaux de gris et la renvoie sous une

Pour cela, faire en sorte que le serveur détermine le nombre à choisir lorsque qu’un client se connecte et qu’il n’y a à ce moment là pas de client connecté.. Tout client qui

L’idée est la suivante : un client producteur envoie au serveur une chaîne de caractères qu’il aura reçu par l’entrée standard (le clavier), le serveur stocke alors cette

Le protocole est élémentaire, le client se contente d’envoyer un mot au serveur qui lui renvoit la réponse sous la forme d’un texte constitué d’un nombre quelconque de lignes

S’il y a un tuteur de cette discipline disponible, le serveur renvoie au client l’identifiant de ce tuteur et le retire de la liste des tuteurs disponibles.. Sinon le serveur renvoie

– Receive Timestamp (le t r de la figure 1) est le temps auquel a été reçue la requête correspondant à une réponse ; il vaudra 0 dans les requêtes que nous transmettrons ;

Dans cet exercice, faîtes un client qui se connecte au service echo de la machine lampe de l’ufr et qui en boucle lui envoie un message et affiche la réponse du service (par exemple