46 lines
1.6 KiB
Markdown
46 lines
1.6 KiB
Markdown
|
# Projet de Programmation multitâches
|
||
|
|
||
|
## Objectifs
|
||
|
|
||
|
Développer une application multitâche en Java ou en C.
|
||
|
Un message envoyé doit contenir le texte, pseudo de l'envoyeur, la date de l'envoi, le destinataire, la date de validité du message.
|
||
|
Le destinataire peut être : public, groupe (nomGroupe), privé (pseudo).
|
||
|
|
||
|
Illustration sur un cas concret des problématiques liées à :
|
||
|
|
||
|
- la synchronisation d'une application client / serveur
|
||
|
- l'exclusion mutuelle
|
||
|
- l'interblocage de processus
|
||
|
|
||
|
## Prérequis
|
||
|
|
||
|
Programmation en Java / C, thread/processus/socket.
|
||
|
|
||
|
## Description
|
||
|
|
||
|
Il faut développer 2 applications :
|
||
|
|
||
|
- Un serveur composé de plusieurs threads, entre autres :
|
||
|
* `ClientListener` qui est à l'écoute des messages entrants
|
||
|
* `ClientSender` qui envoie les messages au client
|
||
|
- Un client composé de 2 tâches :
|
||
|
* `Listener` qui retourne sur la sortie standard tous les messages en provenance du serveur
|
||
|
* `Sender` qui lit les messages en provenance de l'entrée standard et les envoie au serveur
|
||
|
|
||
|
Remarque :
|
||
|
|
||
|
Afin de libérer le serveur pour accepter d'autres clients, il faut créer une instance de ClientListener ainsi qu'une instance de ClientSender pour chaque nouveau client accepté.
|
||
|
|
||
|
![architecture](./img/archi.png)
|
||
|
|
||
|
## Notation
|
||
|
|
||
|
- Mise en oeuvre des tâches serveurs /6 (Dispatcher /3)
|
||
|
- Mise en place de la communication interprocessus /3
|
||
|
- Mise en place de la communication par socket /1
|
||
|
- Mise en oeuvre d'un client /2
|
||
|
- Application (couche métier) /2
|
||
|
- Mise en oeuvre d'un protocole de communication /2
|
||
|
- Compte rendu /4
|
||
|
- Mise en oeuvre d'une CLI /2
|