DESS TNI / 2000-2001 / Réseaux
Ce projet fut à la base un travail d'équipe impliquant toute la promotion, soit une 40aine de personnes. Il fallait réaliser un système de chat "robuste", au sens d'un système client/serveur amélioré car pouvant "changer" de serveur, sans déconnexion de clients ou pertes de messages.

Donc, le principal problème était le suivant: en cas de défaillance du serveur, l'ensemble des clients doivent élire un nouveau serveur parmi eux, et ils doivent évidemment tous choisir le même.

En outre, nous avons donc dû définir entre nous un format de communication impliquant les divers événements (connexion, déconnexion, message public, message privé, changement de serveur...)

En bref, chaque client peut donc à tout moment devenir serveur. Ce n'est pas du tout compliqué à implémenter. Il suffit d'un simple petit drapeau indiquant si le client est serveur ou non. Si il est serveur, il a juste à renvoyer les messages qu'il recoit à tout-le-monde ("forward").

Petite question que vous vous posez peut-être... Je suis nouveau, comment savoir l'adresse du serveur sur lequel je dois me connecter, puisque cette dernière est susceptible de changer. Ce problème n'a même pas eu à être résolu de facon spécifique, grâce à la spécification des paquets que nous avons faite. Un nouveau client a juste à se connecter sur n'importe quel client du réseau. Celui-ci transmet alors ce message de connexion au serveur ("forward").


Notre système a fonctionné et a rempli ses spécifications de robustesse.