Serveur IRC
Transcription
Serveur IRC
Serveur IRC Objectifs : Utilisisation d'ERLANG serveur IRC basique : Discutions Channels Serveur IRC Architectures des modules : server irc Irc_user channel Serveur IRC Architectures des modules : server un gen_server qui connait tous les utilisateurs et tous les channels. -record(state, {users, channels}). users = liste de {Pid, Nick} Channels = liste de {Pid, Channel} Serveur IRC Architectures des modules : irc_user un gen_server qui controle le socket, il y en a un par utilisateur. C'est ce processus qui reçoit les messages et les interprète, il sert aussi à envoyer les messages. Serveur IRC Architectures des modules : channel un gen_server qui gère un channel. Il connnait la liste des utilisateurs connectés -record(state, {c_name, topic, users}). Serveur IRC Lancement du serveur : server:start_link(). server SPAWN server:accept_connection/1 Ce processus accepte les connections et lance un proccesus irc_user Serveur IRC Connections : Socket server:accept_connection/1 start_link() irc_user cast & call server Serveur IRC Gestion des channels : Socket channel irc_user JOIN Channel OUI Le channel existe-t-il ? server modifiele State du process existant NON channel:start_link() channel Serveur IRC Conclusions : - Erlang : c'est top ! - IRC : rfc 2812 pas forcément facile à respecter. - client testé : - Xchat: aucun bug détecté - Gaim : personnes présentes sur le chan avant l'entrée ne sont pas affichées - mIRC : aucun bug détecté