• 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 2016-2017

PR6 – Programmation réseaux

TP n

o

5 : Producteurs-Consommateurs en réseaux

Exercice 1 : 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 tampon (buffer) buf. Quant au client consommateur il attend que le serveur lui envoie des chaînes de caractères qui ont été placés dans le tampon. Il faudra donc programmer deux types de client ClientCons et ClientProd et un serveur Serv.

Afin que le serveur attende des connexions sur deux ports différents, vous pouvez pro- grammer un serveur multi-threadé. Les threads du serveur devront alors partager le tampon de chaînes de caractères buf. Pour éviter les accès concurrents à buf, il suf- fit de créer buf comme un objet de type CopyOnWriteArrayList<String> du package java.util.concurrent. Un objet de type CopyOnWriteArrayList<String> est équi- valent à une ArrayList mais avec gestion des accès concurrents.

Pour tester ensuite votre programme, vous pouvez réaliser les étapes suivantes : 1. lancer le serveur,

2. puis lancer le client consommateur et sauvegardez la sortie dans un fichier : java ClientCons > testClient.txt

3. lancer le client producteur en lui faisant envoyer une centaine de messages :

(for i in {1..100}; do echo "bla bla"; done; echo .) | java ClientProd 4. vérifiez que le fichier testClient.txt contient l’intégralité des messages.

Exercice 2 : plusieurs producteurs et plusieurs consommateurs

Modifier le programme de l’exercice précédent afin de gérer plusieurs producteurs et plu- sieurs consommateurs. Il faut réfléchir à comment faire en multi-threadé et à quel moment créer les différents threads et quels sont les objets partagés par ces threads.

1

Références

Documents relatifs

Écrire un programme qui prend 3 arguments fic, alire, pivot sur la ligne de commande, vérifie que fic est composé uniquement de chiffres et si c’est le cas, stocke dans une chaîne

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

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