You are on page 1of 15

Dvelopper une application

rseau en Java de A Z
par PLU Julien (http://jplu.developpez.com) (Blog)
Date de publication : 09 juin 2010
Dernire mise jour :

Nous allons ici voir un article sur le dveloppement de chaque tape d'un systme de
tchat client/serveur, c'est--dire cahier des charges, protocole, tude, conception et enfin
dveloppement. Nous baptiserons le protocole de cette application PCU (Protocole de Chat
Universitaire). Nous allons d'abord faire un programme de base et ensuite lui apporter des
amliorations petit petit. Commentez cet article :

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

I - Cahier des charges.................................................................................................................................................3


I-A - Programme de base...................................................................................................................................... 3
I-A-1 - Administration........................................................................................................................................ 3
I-A-2 - Canal de discussion.............................................................................................................................. 3
I-A-3 - Discussions prives (pv)....................................................................................................................... 3
I-A-4 - Transfert de fichiers...............................................................................................................................3
I-A-5 - Protocole................................................................................................................................................3
I-A-6 - Scurit..................................................................................................................................................3
I-B - Programme amlior......................................................................................................................................3
II - Protocole................................................................................................................................................................ 4
II-A - Introduction....................................................................................................................................................4
II-B - Spcifications................................................................................................................................................ 4
II-B-1 - Gnralits............................................................................................................................................4
II-B-2 - Messages..............................................................................................................................................4
II-B-3 - Conventions.......................................................................................................................................... 4
II-B-4 - Format des messages en pseudo-BNF............................................................................................... 5
II-C - Etats.............................................................................................................................................................. 5
II-C-1 - Non authentifi..................................................................................................................................... 5
II-C-2 - Authentifi.............................................................................................................................................5
II-C-3 - Connect un canal............................................................................................................................5
II-C-4 - Connexion directe................................................................................................................................ 5
II-D - Messages...................................................................................................................................................... 5
II-D-1 - Enregistrement de la connexion.......................................................................................................... 6
II-D-1-a - IDENTIFIER................................................................................................................................. 6
II-D-1-b - QUITTER..................................................................................................................................... 6
II-D-1-c - FINCONNEXION..........................................................................................................................6
II-D-2 - Oprations sur les canaux................................................................................................................... 6
II-D-2-a - REJOINDRE................................................................................................................................ 6
II-D-2-b - MESSAGE................................................................................................................................... 7
II-D-2-c - MEMBRE......................................................................................................................................7
II-D-2-d - QUITTERCANAL......................................................................................................................... 7
II-D-2-e - NOTIFIER.................................................................................................................................... 8
II-D-3 - Connexion directe................................................................................................................................ 8
II-D-3-a - CONNEXIONDIRECTE................................................................................................................8
II-D-3-b - MESSAGEPRIVE.........................................................................................................................9
II-D-3-c - TRANSFERTFICHIER..................................................................................................................9
II-D-4 - Informations.......................................................................................................................................... 9
II-D-4-a - LISTER.........................................................................................................................................9
II-D-4-b - INFOMEMBRE...........................................................................................................................10
II-D-4-c - MOTD.........................................................................................................................................10
II-D-5 - Administration..................................................................................................................................... 10
II-D-5-a - CNL_CREER............................................................................................................................. 10
II-D-5-b - CNL_SUPPRIMER.....................................................................................................................11
II-D-5-c - CNL_CHANGERSUJET............................................................................................................. 11
II-D-5-d - UTL_EJECTER.......................................................................................................................... 11
II-D-5-e - UTL_BANNIR.............................................................................................................................12
II-D-5-f - SRV_RELANCER....................................................................................................................... 12
II-D-5-g - SRV_STOPPER.........................................................................................................................12
II-D-5-h - SRV_LISTER............................................................................................................................. 12
III - Spcifications...................................................................................................................................................... 13
III-A - Mode d'administration................................................................................................................................ 13
III-B - Serveur.conf............................................................................................................................................... 13
III-C - Base de donnes.......................................................................................................................................13
III-D - Fichiers de logs......................................................................................................................................... 14
IV - Conception.......................................................................................................................................................... 14
V - Annexe................................................................................................................................................................. 14
VI - Remerciements................................................................................................................................................... 15

-2Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

I - Cahier des charges


Ce projet est n lorsque je me suis rendu compte qu' l'universit nous ne pouvions pas communiquer par MSN/IRC/
Jabber ou autre, j'ai donc dcid de faire un systme de Tchat pour que tout le monde puisse se parler aussi bien sur
le rseau de l'universit qu'ailleurs. J'ai galement dcid de dvelopper un site un minimum communautaire autour
de ce logiciel de chat afin que tous les lves puissent partager ce qu'ils veulent et quand ils le veulent et aussi leur
faciliter l'accs aux ressources mises disposition par l'universit.
Nous allons donc voir comment le projet a t conu de A Z.

I-A - Programme de base


I-A-1 - Administration
Le serveur est administr par une ou plusieurs personnes partir du client, celle-ci peut :

crer, supprimer un canal et changer le sujet d'un canal ;


ejecter un utilisateur d'un canal et bannir un utilisateur du serveur.

I-A-2 - Canal de discussion


Un canal de discussion rassemble plusieurs clients qui discutent tous dans le mme espace. Il se distingue par son
nom, son sujet et sa liste d'utilisateurs. Seul l'administrateur du serveur peut crer de nouveaux canaux.

I-A-3 - Discussions prives (pv)


Si deux utilisateurs souhaitent s'entretenir en dehors d'un canal, le serveur les met en relation directe de faon
ce qu'ils puissent communiquer sans que les messages transitent par celui-ci. L'invitation une discussion prive
peut tre dcline.

I-A-4 - Transfert de fichiers


Deux utilisateurs peuvent changer des fichiers. Pour cela ils ne passent pas par le serveur pour des raisons
d'efficacit. De mme que pour les discussions prives, un transfert de fichier peut tre refus par l'un des utilisateurs.

I-A-5 - Protocole
Nous allons mettre en place un protocole pur texte avec l'encodage UTF-8.

I-A-6 - Scurit
Chaque utilisateur doit tre authentifi (login/password) pour pouvoir accder aux fonctionnalits du serveur. Pour
l'authentification, une base de donnes stockera les identifiants et les mots de passe de chaque utilisateur.
L'inscription se fera sur un site web (partie que nous ne verrons pas dans cet article ou bien alors bien plus tard).

I-B - Programme amlior


Je vais lister ici certaines possibilites d'amlioration du programme :

comptes modrateurs ;
la connexion client/serveur est chiffre l'aide de SSL/TLS ;

-3Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

moticnes ;
coloration syntaxique ;
ajout d'un bot ;
canaux de quizz ;
ajout de module par scripting ;
gestion des status.

II - Protocole
Nous allons ici dtailler le protocole utilis.

II-A - Introduction
On appelle serveur l'hte fournissant le service, et client l'hte l'utilisant. Le Protocole PCU fournit un service de
discussion instantane et de mise en relation entre clients, construit sur le protocole TCP/IP, il est volontairement
crit entirement en franais. Il s'organise autour de deux fonctionnalits principales :

les discussions plusieurs--plusieurs, par canaux ;


les discussions un--un, en connexion directe, qui prend galement en charge les transferts de fichiers.

Un canal est un groupe nomm d'un ou plusieurs clients qui recevront tous les messages adresss ce canal. On
appelle connexion directe une connexion entre deux clients ne passant pas par le serveur.

II-B - Spcifications
II-B-1 - Gnralits
Pour tre indpendant de tout langage, PCU est un protocole pur texte, et afin d'tre compatible avec la majeure
partie des caractres existant l'encodage utilis est UTF-8.

II-B-2 - Messages
Les messages changs utilisent :

SP (0x20) et CR (0x0D) comme sparateur ;


CRLF (0x0D, 0x0A) comme squence de terminaison ;
LF (0x0A) comme caractre de fin de ligne.

Les rponses du serveur doivent permettre au client de savoir quel message il rpond. Si un client fait une demande
du nombre de connects, des rponses simples comme +OK_REQUETE ou -ERR_ERREUR seront renvoyes par
le serveur.

II-B-3 - Conventions
Le nom des commandes est volontairement long de faon tre le plus explicite possible. Le format des commandes
est dfini ci-dessous.
Convention des rponses :
+ prfixe une rponse n'tant pas une erreur et est suivi de :

OK pour une rponse positive.


-4Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

KO pour une rponse ngative.


- prfixe une erreur et est toujours suivi de ERR

II-B-4 - Format des messages en pseudo-BNF


Format des messages mis par le client :

REQUETE ::= <COMMANDE><sp> | <cr>[<PARAMS>]<crlf>


COMMANDE ::= un message
PARAMS ::= chane UTF-8 spare par des SP

Format des messages mis par le serveur :

REPONSE ::= <PREFIXE> <TEXTE><crlf>


PREFIXE ::= (+<SUCCES> | -<ERREUR> |

)
SUCCES ::= (OK|KO)_<COMMANDE>
ERREUR ::= chane alphabtique en majuscules, sans espaces, prfixe par ERR_
TEXTE ::= chane alphabtique

II-C - Etats
II-C-1 - Non authentifi
Etat de la connexion client/serveur avant la russite de l'authentification du client.

II-C-2 - Authentifi
Etat de la connexion aprs la russite de l'authentification.

II-C-3 - Connect un canal


tat de la connexion client/serveur aprs la connexion un canal.

II-C-4 - Connexion directe


Etat de la connexion client/client une fois la connexion directe accepte par les deux parties.

II-D - Messages
Si un client envoie un message incorrect, c'est--dire que les arguments ne correspondent pas la commande, le
serveur lui rpond par -ERR_SYNTAXE. Si la commande est inconnue: -ERR_CMDINCONNUE. Si la commande ne
peut tre invoque avec l'tat courant du client : -ERR_ETAT.

-5Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

II-D-1 - Enregistrement de la connexion


II-D-1-a - IDENTIFIER
Synopsis :
IDENTIFIER <login> <mot de passe>
Contraintes :
Ce message ne peut tre mis que dans un tat Non authentifi.
Description :
Le client utilise cette commande pour s'identifier, il passe ainsi dans un tat Authentifi. Si
l'authentification a russie le serveur prcise son login et ses droits (admin ou nonadmin).
Rponses possibles :
L'authentification a russie :
+OK_IDENTIFIER <login> <droits>
Le login ou le mot de passe est incorrect :
-ERR_ECHECIDENT <login>
Le serveur ne peut pas rpondre cette requte cause d'un problme interne :
-ERR_INTERNE

II-D-1-b - QUITTER
Synopsis :
QUITTER [<message de dpart>]
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Commande utilise par le client pour fermer la connexion.
Rponses possibles :
Aucune

II-D-1-c - FINCONNEXION
Synopsis :
FINCONNEXION ["<message de dpart>"]
Contraintes :
Message envoy par le serveur pour prvenir le client de la fin de la connexion lorsque le serveur est
stopp ou relanc, lorsque le nombre maximum de connexions est atteint et enfin lorsq'un client est
banni. Il est possible de prciser un message de fin.
Rponses possibles :
Aucune

II-D-2 - Oprations sur les canaux


II-D-2-a - REJOINDRE
Synopsis :
REJOINDRE <nom-canal>
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
-6Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

Description :
Commande utilise pour rejoindre un canal.
Rponses possibles :
Le canal a bien t rejoint :
+OK_REJOINDRE <nom-canal>
Le client est dj connect :
-ERR_DEJACONNECTE <nom-canal>
Le canal n'existe pas :
-ERR_CANALINTROUVABLE <nom-canal>

II-D-2-b - MESSAGE
Synopsis :
MESSAGE <nom-canal> <texte>
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi et Connect un canal.
Description :
Commande utilise pour envoyer un message sur un canal.
Rponses possibles :
Le message a bien t envoy :
+OK_MESSAGE <nom-canal>
L'utilisateur n'est pas connect au canal prcis :
-ERR_NONCONNECTE <nom-canal>
Le canal n'existe pas :
-ERR_CANALINTROUVABLE <nom-canal>

II-D-2-c - MEMBRE
Synopsis :
MEMBRE <nom-canal>
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Commande utilise pour connatre la liste des connects au canal.
Rponses possibles :
Les utilisateurs ont t trouvs :
+OK_MEMBRE <nom-canal><CR><login1 login2 ... loginN>
Le canal n'existe pas :
-ERR_CANALINTROUVABLE <nom-canal>

II-D-2-d - QUITTERCANAL
Synopsis :
QUITTERCANAL <nom-canal>
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi et Connect un canal.
Description :
Commande utilise pour quitter un canal.
Rponses possibles :
La dconnexion au canal s'est bien passe :
-7Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

+OK_QUITTERCANAL <nom-canal>
L'utilisateur n'est pas connect au canal prcis :
-ERR_NONCONNECTE <nom-canal>
Le canal n'exsite pas :
-ERR_CANALINTROUVABLE <nom-canal>

II-D-2-e - NOTIFIER
Synopsis :
NOTIFIER <nom-canal> <evenement> ([<login>] | [<login>] ["<texte>"] | ["<texte>"])
Contraintes :
Aucunes, ce message est envoy par le serveur.
Description :
Ce message est envoy par le serveur aux clients connects un canal pour les notifier d'un
vnement affectant le canal.
Il y a six vnements possibles :
REJOINT <login>
PARLE <login> "<texte>"
PARTI <login>
EJECTE <login>
SUJETCHANGE "<texte>"
SUPPRIME
BANNI <login>

II-D-3 - Connexion directe


II-D-3-a - CONNEXIONDIRECTE
Synopsis :
CONNEXIONDIRECTE <login> <IP>
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Commande utilise par un client A pour demander une connexion directe un autre client B. Le serveur
sert d'intermdiaire, et permet aux deux clients de s'changer les informations ncessaires comme leurs
adresses IP respectives, et le port sur lequel la connexion doit se faire. On distingue quatre tapes :

A passe par le serveur pour demander une connexion directe B: CONNEXIONDIRECTE login-B IP-A.
Le serveur transmet le message B en substituant son login par celui de A. B reoit : CONNEXIONDIRECTE
login-A ip-A.
B se prpare accueillir une connexion sur un port de son choix et envoie au serveur :
+OK_CONNEXIONDIRECTE IP-B port-B qui le transmet tel quel A et passe alors dans l'tat connexion
directe.
A se connecte IP-B:port-B et passe alors dans l'tat connexion directe. Cette squence peut chouer
l'tape 1 si le login n'est pas reconnu, le serveur rpond alors -ERR_LOGININTROUVABLE login-A. B peut
galement refuser la connexion directe, il rpond alors +KO_CONNEXIONDIRECTE login-A.
Rponses possibles de la part du serveur :
Le login est introuvable :
-ERR_LOGININTROUVABLE <login>
Rponses possibles de la part de B :

-8Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

Confirmation de la connexion directe. Avant l'envoi de cette rponse, il se met en coute :


+OK_CONNEXIONDIRECTE <IP> <port>
Refus de la connexion :
+KO_CONNEXIONDIRECTE <login>

II-D-3-b - MESSAGEPRIVE
Synopsis :
MESSAGEPRIVE <texte>
Contraintes :
Ce message ne peut tre mis que dans un tat Connexion directe.
Description :
Commande utilise dans le cadre d'une connexion client/client pour envoyer un message.

II-D-3-c - TRANSFERTFICHIER
Synopsis :
TRANSFERTFICHIER <nom-fichier>
Contraintes :
Ce message ne peut tre mis que dans un tat Connexion directe.
Description :
Cette commande est utilise pour demander un transfert de fichier. Le client qui propose le transfert
prcise le nom du fichier. Le receveur lui, prcise le port sur lequel il attend la connexion si le transfert
est accept.
Rponses possibles :
Transfert accept :
+OK_TRANSFERTFICHIER <port>
Transfert refus :
+KO_TRANFERTFICHIER

II-D-4 - Informations
II-D-4-a - LISTER
Synopsis :
LISTER [<nom-canal>]
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Commande utilise pour connatre la liste des canaux du serveur. Le serveur rpond par une liste de
tripls <nom-canal> <topic> <nombre d'utilisateurs> spars par CR. Si le nom d'un canal est prcis
celle-ci ne s'effectue que sur ce dernier c'est--dire que le serveur rpond par le tripl <nom-canal>
<topic> <nombre d'utilisateurs>
Rponses possibles :
La liste a t trouve :
+OK_LISTER<CR>triplet1<CR>triplet2<CR>...<CR>tripletN
Si le nom du canal a t prcis et que celui-ci n'existe pas :
-ERR_CANALINTROUVABLE <nom-canal>

-9Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

II-D-4-b - INFOMEMBRE
Synopsis :
INFOMEMBRE <login>
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Commande utilise pour connatre les informations relatives un utilisateur.
Rponses possibles :
L'utilisateur a t trouv :
+OK_INFOMEMBRE <login><CR>nom-canal1 ... nom-canalN
L'utilisateur n'a pas t trouv :
-ERR_LOGININTROUVABLE <login>

II-D-4-c - MOTD
Synopsis :
MOTD
Contraintes :
Aucunes.
Description :
Commande utilise pour connatre le MOTD (Message Of The Day) du serveur.
Rponses possibles :
Le message est trouv :
+OK_MOTD "<motd>"
Une erreur interne est survenue :
-ERR_INTERNE

II-D-5 - Administration
Ces commandes sont rserves l'administrateur. Tout utilisateur non privilgi qui tenterait d'utiliser ces commandes
reoit le message d'erreur -ERR_NONADMINISTRATEUR.

II-D-5-a - CNL_CREER
Synopsis :
CNL_CREER <nom-canal> "<sujet-canal>"
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Cration d'un canal.
Rponses possibles :
Le canal a bien t cr :
+OK_CNL_CREER <nom-canal> "<sujet-canal>"
Le canal existe dj :
-ERR_CANALEXISTANT <nom-canal>
Trop de canaux ont dj t crs :
-ERR_NBCANAUXMAX

- 10 Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

II-D-5-b - CNL_SUPPRIMER
Synopsis :
CNL_SUPPRIMER <nom-canal>
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Suppression d'un canal.
Rponses possibles :
Le canal a bien t supprim :
+OK_CNL_SUPPRIMER <nom-canal>
Le canal pass en argument n'existe pas :
-ERR_CANALINTROUVABLE <nom-canal>

II-D-5-c - CNL_CHANGERSUJET
Synopsis :
CNL_CHANGERSUJET <nom-canal> "<nouveau-sujet>"
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Commande utilise pour changer le sujet d'un canal.
Rponses possibles :
Le sujet du canal a bien t chang :
+OK_CNL_CHANGERSUJET <nom-canal> "<nouveau-sujet>"
Le canal pass en argument n'existe pas :
-ERR_CANALINTROUVABLE <nom-canal>
Le sujet n'est pas valide :
-ERR_SUJETINCORRECT "<nouveau sujet>"

II-D-5-d - UTL_EJECTER
Synopsis :
UTL_EJECTER <login> <nom-canal>
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Commande utilise pour jecter un utilisateur d'un canal.
Rponses possibles :
L'utilisateur a t ject :
+OK_UTL_EJECTER <login> <nom-canal>
L'utilisateur n'a pas t trouv sur le serveur :
-ERR_LOGININTROUVABLE <login>
L'utilisateur n'est pas connect au canal :
-ERR_NONCONNECTE <login> <nom-canal>
Le canal n'existe pas :
-ERR_CANALINTROUVABLE <nom-canal>

- 11 Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

II-D-5-e - UTL_BANNIR
Synopsis :
UTL_BANNIR <login>
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Commande utilise pour bannir un utilisateur du serveur.
Rponses possibles :
L'utilisateur a t banni :
+OK_UTL_BANNIR <login>
L'utilisateur n'a pas t trouv sur le serveur :
-ERR_LOGININTROUVABLE <login>

II-D-5-f - SRV_RELANCER
Synopsis :
SRV_RELANCER [<message>]
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Relance le serveur. Il est possible de prciser un message de notification l'attention des clients.
Rponses possibles :
Le serveur va se relancer :
FINCONNEXION [<message>]

II-D-5-g - SRV_STOPPER
Synopsis :
SRV_STOPPER [<message>]
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Arrte le serveur. Il est possible de prciser un message de notification l'attention des clients.
Rponses possibles :
Le serveur va s'arrter :
FINCONNEXION [<message>]

II-D-5-h - SRV_LISTER
Synopsis :
SRV_LISTER
Contraintes :
Ce message ne peut tre mis que dans un tat Authentifi.
Description :
Liste toutes les connexions du serveur. Le serveur rpond par une liste de couple <login> <IP> spars
par des CR.
Rponses possibles :
La liste a t trouve :

- 12 Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

+OK_SRV_LISTER <CR>liste-connexion

III - Spcifications
III-A - Mode d'administration
Le serveur se lance en 'daemon', sans interface. L'administrateur se connecte avec un client, et le serveur lui donne
les droits d'administration lors de l'authentification.

III-B - Serveur.conf
Ce fichier cod entirement en UTF-8 contient les paramtres de configuration du serveur. Son format est trs simple :
PROPRIETE1=VALEUR<CRLF>
PROPRIETE2="TEXTE"<CRLF>
PROPRIETE3="TEXTE \\
SUITE TEXTE %d %ip %nc %nu"
...
PROPRIETEN=VALEUR<CRLF>
Si le premier caractre non-blanc (c'est--dire diffrent de SP, HT ...) est #, la suite de la ligne est un commentaire,
ignore lors de la lecture du fichier. Seul le MOTD peut tre sur plusieurs lignes condition qu'une ligne se termine
par \\. Le MOTD peut aussi tre format par les format suivants :

%d : date du jour ;
%ip : adresse IP du serveur ;
%nu : nombre de clients connects ;
%nc : nombre de canaux crs.

Ainsi que la liste des proprits :

PORT_ECOUTE
CONNEXION_MAX
CANAUX_MAX
MOTD
MSG_CONNEXION_MAX
MSG_UTL_BANNI
SERVEUR_BDD
PORT_SERVEUR_BDD
NOM_BDD
USER_BDD
MDP_BDD

III-C - Base de donnes


La base de donnes est compose d'une table "utilisateurs" et de 6 champs :

(VARCHAR)identifiant : login du client ;


(VARCHAR MD5)mdp : mot de passe du client ;
(ENUM)droits : si le client est administrateur ou non ;
(VARCHAR)mail : l'adresse mail du client ;
(DATE)inscription : date de l'inscription du client ;
(ENUM)active : si le client est banni ou non.

- 13 Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

III-D - Fichiers de logs


Le serveur produira trois fichiers de logs :

un pour les connexions / dconnexions ;


un pour les canaux ;
un pour le serveur lui-mme (lancement, arrt, problmes internes, ...).

IV - Conception
Voici le diagramme UML de l'application telle que je l'ai conue. Cette faon n'est sans doute pas la meilleure mais
elle fonctionne bien. Si jamais vous avez une meilleure conception, n'hsitez pas m'en faire part.

Diagramme UML du serveur

V - Annexe
Vous pourrez retrouver l'avancement du projet PCU cette adresse Donc si vous dsirez apporter des ides,
rapporter des bogues si vous l'avez test ou tout autre type de remarque n'hsitez surtout pas les faire sur le site
du projet indiqu ci-dessus.

- 14 Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

Dvelopper une application rseau en Java de A Z par PLU Julien (http://jplu.developpez.com) (Blog)

VI - Remerciements
Merci Ricky81 ainsi qu' Baptiste Wicht pour leur aide la rdaction de cet article. Et merci Benj. pour sa
relecture et correction orthographique.

- 15 Copyright 2010 - PLU Julien. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E
de dommages et intrts.
http://jplu.developpez.com/tutoriels/java/pcu/

You might also like