Iut: Ragots & Commérages (IRC)

Présentation

Le but de ce TP est d'écrire un client et un serveur pseudo-IRC en C++, en utilisant les sockets TCP et la librairie ncurses (et en prévoyant une amélioration avec QT). Bien entendu, vous n'allez pas implémenter un réel client IRC (la norme de communication est décrite dans le RFC (Request For comment) 1459 que vous pouvez trouver sur www.irchelp.org). Une fenêtre du client IRC peut se diviser en trois parties: la liste des messages reçus, une barre de status qui indique le nickname et le dernier channel joint, une ligne de commande sur laquelle on peut taper des messages, ou des commandes (toute commande commence par un /). Pour tester irc:

Travail demandé

Vous allez écrire un prototype du client et du serveur IRC implémentant uniquement les fonctionnalités essentielles. Vous êtes maître du protocole de communication entre le serveur et le client et n'avez pas à suivre les recommendations du RFC. Vous devrez écrire votre programme en C++, en utilisant les outils disponibles dans la norme ANSI (en particulier la STL). Les fonctions d'entrée/sortie de C++ ne suffiront pas à implémenter l'interface texte.
Vous utiliserez donc la librairie ncurses ou une bibliothèque graphique (QT). ncurses est la librairie de référence pour les entrées/sorties pour terminal sous Unix. Elle est écrite en C et de nombreux programme en font un usage intensif (elle est très complète). Pensez à inclure ncurses.h et à linker avec la librairie ncurses. Pensez aussi à consulter le man des fonctions ncurses.

Conception

Avant de taper une seule ligne de code, ayez une idée précise des besoins du logiciel, un diagramme UML de vos classes et un schéma présentant le fonctionnement de vos programme (bientôt vous aurez des diagrammes de collaboration). Le succès de la programmation dépend de la qualité de l'analyse.

A propos de ncurses

Pour vous éviter de perdre trop de temps: Je vous donne aussi un programme qui présente rapidement ce dont vous devriez avoir besoin en matière de curses. Je rajoute aussi un programming howto trouvé sur le net. Au travail!