Description : Développement d'un serveur IRC complet permettant la gestion de canaux et utilisateurs en C++ 98, avec un support pour la communication en temps réel via TCP/IP. Le projet inclut des fonctionnalités standards IRC comme l'authentification des utilisateurs, la gestion des canaux, et la gestion des rôles des utilisateurs (opérateurs vs utilisateurs). Ce serveur gère aussi des connexions simultanées non-bloquantes grâce à poll() ou son équivalent, garantissant une performance optimale sous forte charge. Compétences et technologies utilisées :
Langage : C++ 98
Protocoles : TCP/IP, gestion des sockets
Technologies système : Gestion des descripteurs de fichiers, non-bloquance via poll(), fcntl, recv(), send()
Outils : Tests via clients IRC externes, gestion des erreurs de réseau, débogage réseau
Méthodologie : Tests de performance et validation de robustesse, code conforme au standard C++ 98
Responsabilités et Réalisations :
Développement du serveur IRC en C++ :
Création d’un serveur IRC fonctionnel avec authentification, gestion des canaux, et gestion des utilisateurs.
Implémentation de la gestion de messages privés et publics, ainsi que la fonctionnalité d'envoi/lecture de messages sur des canaux.
Communication non-bloquante avec gestion des connexions multiples :
Conception d'une architecture basée sur des descripteurs de fichiers non-bloquants, avec gestion des connexions simultanées via poll() pour éviter le blocage de l'application sous une forte charge.
Optimisation des performances et consommation de ressources pour permettre une scalabilité et une réactivité accrues du serveur.
Gestion des commandes opérateurs et des fonctionnalités avancées des canaux :
Implémentation des commandes spécifiques aux opérateurs : KICK (expulsion d'un utilisateur), INVITE (invitation à un canal), TOPIC (gestion du sujet du canal), et MODE (modification des paramètres du canal : privé, mot de passe, gestion des utilisateurs).
Développement de la gestion des rôles utilisateur (opérateurs vs utilisateurs normaux) et des restrictions associées.
Tests et validation :
Mise en place de tests unitaires et intégration pour vérifier la stabilité et la gestion des erreurs réseau (réception de données partielles, faible bande passante, etc.).
Utilisation d’un client IRC de référence pour valider les fonctionnalités du serveur et garantir une expérience sans erreur.
Performance et gestion des ressources :
Optimisation du code pour garantir une utilisation minimale des ressources système tout en permettant un grand nombre de connexions simultanées.
Implémentation de mécanismes de récupération d'erreurs et d'exceptions pour maintenir la disponibilité du serveur en cas d'incident réseau.
Fonctionnalités bonus (optionnel) :
Développement de fonctionnalités avancées comme le transfert de fichiers entre utilisateurs et l'intégration d'un bot IRC pour enrichir l'expérience du serveur (partie optionnelle).
Résultats :
Serveur IRC fonctionnel : Mise en place complète d’un serveur IRC répondant aux critères de performance et de stabilité, capable de gérer plusieurs utilisateurs et de respecter les protocoles et normes IRC standards.
Optimisation des performances : Réduction de la consommation de ressources grâce à la gestion efficace des entrées/sorties et des connexions simultanées.
Expérience utilisateur fluide : Authentification, gestion des messages et des canaux opérée sans erreurs, même sous charge.