Enseignements

Systemes D Exploitation Projet 2011

Sujet du projet de Systeme d’Exploitation (2010–2011)

Le but du projet est de construire une application de type chat basee sur la bibliotheque curses.

Curses est une bibliotheque assez difficile a maitriser, mais vous n’aurez pas, en principe, a vous plonger dans sa programmation: etudiez simplement le fichier window.py, vous trouverez facilement comment l’utiliser afin de construire votre application.

Attention rappelez-vous que python est un langage objet qui supporte l’héritage, pensez à vous en servir au lieu de modifier le code fourni.

Le projet comporte trois questions de difficulté croissante. Vous devrez remettre un programme en réponse à chaque question: le fait de remettre un programme pour une question difficile ne vous dispense pas de la question facile qui précède.

Modalites de remise

Vous pouvez faire le projet seul ou a au 2 maximum. AUCUN trinome ne sera accepte.

Vous devrez creer un archive .zip contenant un repertoire nomme Projet-NOM ou Projet-NOM1-NOM2 selon que vous etes en monome ou binome. (Evidemment, remplacez NOM par votre nom!!)

Dans cette archive, vous placerez 1 fichier python nomme QuestionN.py pour la reponse a la question N. Vous pouvez aussi ajouter des fichiers supplementaires. Pensez aussi a ajouter le fichier window.py fourni, pour que votre programme fonctionne sans que j’ai besoin de changer quoi que ce soit.

Vous pouvez ajouter un (petit) fichier texte de type README pour explique les eventuelles astuces que vous avez trouve. Attention, n’abusez pas des “truc tordus”, j’aurai tendance a sanctionner ce que je ne comprends pas.

DATE DE REMISE: Lundi 2 Mai dernier delai, non negociable

Une boite de dépôt a été ouverte sur ENT/J@lon. Aucun envoi par mail ne sera accepté.

ATTENTION: le projet est realiser sur une machine linux (ou macos).

Bon projet!

Question 1

Testez d’abord le module window fourni et essayez de comprendre comment il fonctionne et comment il pourra vous servir. Ce module contient a la fin, dans la section d’auto-test, une instruction commentee. Decommentez-la et observez ce qui se passe: vous devriez voir une seconde fenetre apparaitre.

Utilisez des tubes nommés unix (commande mkfifo) pour permettre à ces deux programmes de communiquer. Vous ferez en sorte que chacun affiche un prompt différent selon qu’il affiche un message saisi dans sa propre fenetre de terminal ou dans l’autre terminal:

local: bla bla
remote: khjklklj
....

Question 2

La solution précédente fonctionne bien avec deux interlocuteurs, mais devient vite compliquée a plus que 2. Transformez (eventuellement) le programme initial window en application en client-serveur: faites en sorte que la fenetre de chat soit le client et utilise des tubes pour envoyer les messages vers un serveur au lieu d’un autre chat directement. Puis ecrivez le programme serveur: chaque fois qu’il recoit un message sur un tube en provenance d’un client chat, il doit le retransmettre aux autres clients. Evidemment vous pouvez transmettre des informations supplémentaires, par exemple afin d’identifier le client qui “parle”. Dans cette version vous ferez un serveur qui est prevu pour communiquer avec un nombre fixé de client et de tuibes. Pensez à utiliser la primitive select.select pour surveiller tous les tubes en même temps.

Question 3

Faites une nouvelle version client-serveur, mais cette fois utilisant les sockets et le protocole TCP. Rendez votre application dynamique, c’est-à-dire capable d’accepter les connexions de client au fur et à mesure. Gérez aussi la terminaison, par exemple en affichant un message pour signaler la deconnexions aux autres clients.

Indication: vous pouvez faire en sorte que le client se connecte a un serveur qui se trouve sur la meme machine en utilisant l’adresse localhost (127.0.0.1). Pensez aussi a utiliser la commande telnet pour tester le client sans le serveur ou vice-versa. Exempple:

telnet localhost 2526

permet de se connecter au serveur qui tourne sur la machine locale sur le port 2526.

Page d’Accueil

Enseignements 2017-18

Enseignements Antérieurs

Recherche…

edit SideBar

Blix theme adapted by David Gilbert, powered by PmWiki