• Aucun résultat trouvé

PR6 – Programmation réseaux TP no 5 : Producteurs-Consommateurs en réseaux

N/A
N/A
Protected

Academic year: 2022

Partager "PR6 – Programmation réseaux TP no 5 : Producteurs-Consommateurs en réseaux"

Copied!
1
0
0

Texte intégral

(1)

L3 Informatique Année 2014-2015

PR6 – Programmation réseaux

TP n

o

5 : Producteurs-Consommateurs en réseaux

Exercice 1 : Programmation d’un buffer concurrent

Le but de cet exercice est de programme une liste chaînée acceptant des accès concur- rents en exclusion mutuelle et pour laquelle la fonction de retirer des éléments utilise une attente passive. Programmez une classe BufferConcurrent avec un champ de type LinkedList<String> représentant une liste de chaînes de caractères et deux méthodes ajouter etretirer.

– La méthode ajouter prend le verrou sur la liste et ajoute une chaîne de catactères à la liste et réveille des threads en attente sur cette liste. Lorqu’elle termine elle libère le verrou.

– La méthoderetirerprend le verrou sur la liste, si la liste est vide, elle met en attente le thread appelant, sinon elle renvoie la première chaîne de caractères présente dans la liste qu’elle retire également. Lorsqu’elle termine elle libère le verrou.

Indication : Pensez à utiliser le mot clef synchronized ainsi que les instructions wait, notify et notifyAll.

Exercice 2 : Un producteur et un consommateur

Le but de cet exercice est de programmer une application réseau avec un client producteur et un client consommateur. Pour ce faire, le serveur écoute sur deux ports. Sur un port, le serveur attend les connexions d’un client producteur et sur l’autre port les connexions d’un client consommateur. 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 chaîne de caractères dans un buffer (par exemple un objet de type BufferConcurrent). Quant au client consommateur il attend que le serveur lui envoie des chaînes de caractères qui ont été placés dans le buffer. Vous devrez donc programmer deux types de client ClientCons etClientProd et un serveurServ.

Indication : Avant de commencer, réfléchissez comment faire pour que le serveur at- tende des connexions sur deux ports différents, pourquoi pas en faisant un serveur multi- threadé ? Que doivent alors partager les threads du serveur ?

Exercice 3 : Plusieurs producteurs et plusieurs consommateurs

Modifiez le programme de l’exercice précédent pour avoir plusieurs producteurs et plu- sieurs consommateurs (avant réfléchissez comment faire en multi-threadé et à quel moment créer les différents threads et quels sont les objets partagés par ces threads). Faîtes aussi en sorte que votre programme réagisse "correctement" si un consommateur se déconnecte (soit de façon brutale, soit de façon propre).

1

Références

Documents relatifs

Ce message aura la forme suivante : adresse_ip port\n où adresse_ip est une chaînes de caractère représentant une adresse IP et port est une chaîne de caractères représentant

Pour cela le client demande la définition d’un mot au serveur et celui-ci lui renvoie le texte obtenu par l’appel à l’utilitaire dict (voir man dict sur son terminal).. Si dict

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

Écrire un programme, ServeurMajuscule, représentant un serveur TCP itératif renvoyant les chaînes de caractères envoyées par des clients après les avoir mis en majuscule.. Le

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