:: Enseignements :: Licence :: L3 :: 2009-2010 :: Programmation système en C ::
| Mini © Twitter |
Conditions de rendu
Le projet est à réaliser en binôme. Il est à rendre le 28 mai 2010 (ou avant).
Le projet devra être rendu sous la forme d'une archive compressée au format
zip et devra contenir le répertoire login1_login2. Ce répertoire devra contenir :
- doc.pdf : le rapport de projet
- src/ : le répertoire contenant les sources
- log/ : le répertoire contenant les logs du serveur
- bin/ : le répertoire contenant les exécutables
- Makefile : le fichier qui permet de compiler le projet avec la
commande make
Le lien suivant pointe sur l'archive qui devrait être rendue par les
étudiants Foo et Bar (vous n'êtes pas obligés de faire votre rapport en
LaTeX) :
Les exécutables
lance en mode démon un serveur qui écoute sur le port "portnum" (ou 1963
par défaut). Ce serveur, une fois la communication établie, réalise le
protocole applicatif décrit ci-dessous. La commande échoue si un serveur
tourne déjà sur ce port, en affichant un message d'erreur, et en
retournant la valeur 1. L'option "-d" indique que l'on souhaite faire du
dynamique (voire plus bas), si l'on n'a pas implanté cette
fonctionnalité, la commande échoue en affichant rien et en retournant 2.
Sinon elle retourne 0 pour indiquer que le serveur à bien été lancé.
tue le démon lancé précédemment par la commande "server". Ne fait rien si aucun démon ne tourne.
lance un client qui se connecte au serveur minitwitter sur le port "portnum"
(par défaut 1963) sur la machine indiquée par "URI". Le client lit sur
l'entré standard les commandes à envoyer au serveur et affiche sur la
sortie standard les réponses du serveur. (Attention au mode dynamique).
Le protocole applicatif minitwitter
Une fois la connexion établie, le client doit s'authentifier.
L'authentification est simple : le client envoie un login sur
une ligne. Le serveur envoie en réponse un id (sous forme d'un
entier) de client sur une ligne. (Toutes les commandes sont faites sur
une ligne, c'est-à-dire se terminent par '\n').
Ensuite, le serveur répond aux commandes du client :
liste les
login et
id des personnes connectées (les
personnes déconnectées n'apparaissent plus).
- renvoie pour chaque utilisateur une ligne de la forme :
id:login.
ajoute un
twit contenant le texte
text limité à 140 caractères.
- renvoie 0 : l'opération s'est effectué avec succès
- renvoie 10 : l'opération a échoué (raison inattendue)
récupère tous les
twit posté par l'utilisateur identifié par
id.
- renvoie un twit par ligne
ajoute l'utilisateur identifié par
id à la liste des
following.
Cela signifie qu'il sera possible de récupérer les messages de
id via la
commande
ADD.
- renvoie 0 : l'opération s'est effectué avec succès
- renvoie 20 : l'opération a échoué (raison inattendue)
- renvoie 21 : utilisateur id invalide
- renvoie 22 : utilisateur id déjà following
retire l'utilisateur identifié par
id de la liste des
following.
- renvoie 0 : l'opération s'est effectué avec succès
- renvoie 30 : l'opération a échoué (raison inattendue)
- renvoie 31 : utilisateur id invalide
- renvoie 32 : utilisateur id pas following
vide la liste des
following.
- renvoie 0 : l'opération s'est effectué avec succès
- renvoie 40 : l'opération a échoué (raison inattendue)
récupère tous les
twit postés par les utilisateurs ayant
été ajoutés dans la liste des
following.
- renvoie pour chaque twit une ligne de la forme :
id:text.
- renvoie 1 : commande invalide
Bonus
passe en mode dynamique. Si un des utilisateurs inscrit dans la liste des
following poste un
twit, celui-ci est
reçu directement (sans appel à
ALL).
- renvoie 0 : l'opération s'est effectué avec succès
- renvoie 50 : l'opération a échoué (raison inattendue)
désactive le mode dynamique.
- renvoie 0 : l'opération s'est effectué avec succès
- renvoie 60 : l'opération a échoué (raison inattendue)
Super bonus
Adapter le serveur pour qu'un navigateur web puisse faire office de client.
© Université de Marne-la-Vallée