Derniere mise a jour : 9 fevrier 2026

Mini IRC

2024 Java Reseau

Presentation

Objectif principal : Un serveur de chat style IRC. Les utilisateurs se connectent, rejoignent des channels, et discutent en temps reel. Avec messages prives et commandes /nick, /join, /msg, etc.

Technologies utilisees : Java avec sockets TCP. NIO avec Selector pour gerer plusieurs clients dans un seul thread (scalabilite). Protocole texte custom inspire de IRC.

Fonctionnalites cles : Multi-channels, changement de pseudo, messages prives, liste des utilisateurs, notifications join/leave, ping/pong pour detecter les deconnexions.

Livrables attendus : Serveur qui supporte 50+ clients simultanes. Client console basique. Documentation du protocole.

Calendrier previsionnel : Trois semaines. Java NIO c'est un autre paradigme que les threads classiques, fallait comprendre les Selectors.

Parties prenantes & criteres de succes : TP de reseaux. Le but c'etait d'implementer un protocole applicatif et gerer la concurrence.

Le Defi

Gerer des centaines de clients avec peu de threads. Un thread par client ca scale pas. Java NIO permet d'avoir un seul thread qui gere toutes les connexions, mais le code devient plus complexe (non-blocking, state machines).

La Solution

Un Selector qui monitore tous les channels. Quand un client est "readable", on lit ce qu'on peut (non-blocking). Chaque client a un buffer pour accumuler les donnees jusqu'a avoir un message complet. C'est du event-driven programming.

Architecture Technique

Classe Server avec la boucle principale et le Selector. Classe Client qui track l'etat d'un client (nick, channels, buffer). Classe Channel qui gere les membres et broadcast les messages. Classe Protocol qui parse les commandes et genere les reponses. Pattern Observer pour notifier les clients.

Points Cles

  • Java NIO non-bloquant
  • Protocole IRC-like
  • Channels et messages prives

Apercu

Resultats & Apprentissages

Le serveur tient 100+ clients sur ma machine sans probleme. On a fait un test avec toute la promo connectee. NIO c'est puissant mais demande de penser differemment. Je comprends mieux comment marchent les serveurs haute performance.

Evolutions Futures

Chiffrement TLS pour les messages. Persistence des messages (historique). Modes de channel (+o pour les ops). Interface graphique avec JavaFX. Compatibilite avec les vrais clients IRC.

Retour aux projets Me contacter