Projet 3 • Clavardage
Chat is this real??
Cartouche
| Champ | Valeur |
|---|---|
| Auteur·e | Élise |
| Édition | 2024-04-03 |
| Durée | 2~3 semaines |
| Taille des équipes | 3~4 personnes login des auteurs·rices dans author.txt |
| Rendu | via git, dépôt $YEAR_chat, droits en lecture à delivery_collector |
| Compilation | make avec règles all, clean, fclean, re |
| Binaires | chat_server : exécutableut.out : tests unitaires |
Correction
Barème
| Critère | Points |
|---|---|
| basic: choix du port d’écoute et fallback automatique | 2 |
| basic: choix nombre de client max | 1 |
| basic: relais des messages aux autres | 4 |
| basic: déconnexions EOF | 3 |
| basic: déconnexions logout | 2 |
| relais des messages préfixé | 2 |
| gestion des pseudos | 3 |
| nombre variable de clients | 4 |
| commande /wisp | 3 |
| commande /kick | 3 |
| Total des points accessibles | 26 |
| Note Maximale | 20 |
| Malus par ligne d’erreur de norme | -0.5 |
| Malus pour un dépôt sale | -5 |
| Malus mauvaise gestion de la mémoire et des resources | 0 à -6 |
Conditions
- Soutenance avec diapositives (PPT ou équivalent), exemple plan :
- Rappel du sujet
- Rôles
- Méthodologie
- Difficultés principales
- Architecture, comment votre code est organisé
- Fonctionnalités implémentées
- Démonstration
- Conclusion :
- ce que vous avez appris
- que feriez-vous différemment
- etc.
- Toute fonctionnalité non présentée est considérée comme non-implémentée.
Règlement de projet
Prévention de la triche
La réalisation de cet exercice est assujettie aux règles en vigueur dans l’école en matière de triche et de normalisation. Tricher vous expose à de graves sanctions.
Vous devez respecter les règles de normalisation suivantes : https://git.ecole-89.com/eriizu/coding_style/src/branch/main/norm.md
Le non-respect de la norme vous fera perdre une partie ou la totalité des points qui auraient pu être acquis, sur l’ensemble du rendu.
Fichiers à rendre et compilation
La structure de votre dépôt doit être la suivante :
Makefileà la racine de votre dépôt- fichiers
*.cdanssrc/ - fichiers
*.hdansinclude/ - fichiers
*.cde tests unitaires criterion danstest/
Votre Makefile doit au minimum avoir les règles all, clean, fclean et re
Vous devez aussi avoir une recette par binaire demandé dans le cartouche de sujet. La recette all doit dépendre de celles de binaires demandés.
Tests unitaires
Chacune de vos fonctions doit avoir des tests unitaires associés.
Fonctions autorisées et interdites
Pour tout le sujet, les fonctions autorisées sont :
writemallocfreestrerrorsocketbindlistenhtonsinet_addrplaceholdermemsetsetsockopt
Consignes
Fonctionnalités obligatoires – basics
Implémentez un serveur de clavardage (de discussion par écrit). Il doit prendre en argument les options :
-p PORTpour choisir le port sur lequel écouter ;-fpour permettre le fallback vers un autre port si l’original n’est pas disponible ;-l CLIENT_LIMITpour choisir le nombre maximum de client.
Lorsqu’un client envoie un message au serveur, le serveur doit l’envoyer à tous les autres clients (mais pas à son expéditeur).
Électives
Choisissez les fonctionnalités que vous préférez implémenter en fonction de vos préférences et du nombre de points qu’elles rapportent parmi la liste suivante :
- messages préfixés du numéro du client ou de son pseudo (dans le cas où vous avez fait la commande
/nick) ; - commande
/nick: les utilisateurs peuvent choisir un pseudo qui s’affichera dans les préfixes de messages ; - nombre variable de client : on peut lancer votre programme sans
-let il gérera un nombre virtuellement infini de client ; - commande
/wisp: les utilisateurs peuvent envoyer un message à une personne précise ; - commande
/kick: un utilisateur peut en déconnecter un autre.
Bonus
Vous pouvez implémenter davantage de fonctionnalités de votre choix, leur valeur en point sera déterminée après votre rendu et votre passage en soutenance. L’implémentation d’un bonus ne peut pas être une excuse pour une fonctionnalité obligatoire ou elective que ne fonctionne plus.