From cebf82f2bdc28496f1ac5ce2970d03517374efa6 Mon Sep 17 00:00:00 2001 From: Phuntsok Drak-pa Date: Mon, 26 Feb 2018 12:30:34 +0100 Subject: [PATCH 1/4] Proposition de protocole --- protocole.md | 174 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 protocole.md diff --git a/protocole.md b/protocole.md new file mode 100644 index 0000000..608fc7e --- /dev/null +++ b/protocole.md @@ -0,0 +1,174 @@ +[WARNING] Deprecated: markdown_github. Use gfm instead. +Proposition de protocole +======================== + +Proposition de protocole pour la communication inter-serveurs/clients +pour le projet de chat textuel. + +Quelques règles pour assurer le bon fonctionnement du protocole : + +- Chaque ligne se termine par les caractères `\r\n`. +- Un nom d’utilisateur ne peut contenir que des caractères + alphanumériques (a-z, A-Z, 0-9). + +Connexion au serveur +-------------------- + +Gestion de l’arrivée des utilisateurs sur le serveur (choix du nom +d’utilisateur et notification des clients). + +### Requête 1.1 + +Connexion sans nom d’utilisateur fournit par le client, `` +devant être remplacé par la version utilisée par le cliet (tel que `0.5` +ou `1.0`). Client vers serveur. + +``` text +PROT CONNECT NEW +``` + +### Requête 1.2 + +Connexion au serveur mentionnant le nom d’utilisateur + +``` text +PROT CONNECT USER +``` + +Selon si la connexion est établie avec ce nom d'utilisateur, la +[1.1.4](#*Requête 1.4) ou [1.1.5](#*Requête 1.5) sera renvoyée. Si la +requête [1.1.5](#*Requête 1.5) est renvoyée, la [1.1.2](#*Requête 1.2) +suivra immédiatement après. + +### Requête 1.3 + +Réponse à cette requête du serveur vers le client (serveur vers client), +requête du nom d'utilisateur. + +``` text +PROT REQ NAME +``` + +### Requête 1.4 + +Réponse à la requête du serveur (client vers serveur), envoi du nom +d’utilisateur. + +``` text +PROT NAME +``` + +### Requête 1.5 + +Réponse du serveur si l'enregistrement du nom d'utilisateur s’est bien +déroulé (serveur vers client) + +``` text +PROT OK WELCOME +``` + +### Requête 1.6 + +Réponse du serveur si l'enregistrement du nom d'utilisateur a rencontré +une erreur (nom déjà utilisé,…) (serveur vers client). La +[1.1.2](#*Requête 1.2) est envoyée vers le client. + +``` text +PROT FAILURE +``` + +### Requête 1.7 + +Conjointement à la [1.1.4](#*Requête 1.4), cette requête sera envoyée à +tout autre client connecté pour les notifier de la connexion d’un nouvel +utilisateur. + +``` text +JOIN +``` + +Déconnexion du serveur +---------------------- + +Gestion du départ des utilisateurs du serveur + +### Requête 2.1 + +Envoi du client vers le serveur le notifiant de sa déconnexion + +``` text +PROT BYE +``` + +### Requête 2.2 + +Envoi du serveur vers chaque client de la notification de déconnexion +d'un client + +``` text +PROT LOGOUT +``` + +Ping +---- + +Vérification de la connexion des clients avec le serveur. Chaque minute, +la requête [1.3.1](#*Requête 3.1) est envoyée à chaque client qui ont +tous trois secondes pour répondre avec la [1.3.2](#*Requête 3.2). + +### Requête 3.1 + +Envoi d’un ping du serveur vers chaque client. + +``` text +PROT PING +``` + +### Requête 3.2 + +Envoi de la réponse du client au serveur pour la [1.3.1](#*Requête 3.1) + +``` text +PROT PONG +``` + +Échange de messages +------------------- + +### Messages publics + +#### Requête 4.1.1 + + Envoi depuis le client vers le serveur d’un message public + + ``` text + PROT MSG + ``` + +#### Requête 4.1.2 + + Transmission d’un message d’un client vers les autres clients + + ``` text + PROT FROM MSH + ``` + +### Messages privés + +#### Requête 4.2.1 + + Transmission d’un message d’un client vers un autre client + uniquement, spécifié par son nom d’utilisateur (client vers serveur) + + ``` text + PROT PRIV TO MSG + ``` + +#### Requête 4.2.2 + + Transmission d’un message d’un client vers un autre client + uniquement, spécifié par son nom d’utilisateur (serveur vers client) + + ``` text + PROT PRIV FROM MSG + ``` From 7e4d97d711cc5209886d92683dc1ff8da836c532 Mon Sep 17 00:00:00 2001 From: Phuntsok Drak-pa Date: Mon, 26 Feb 2018 12:56:21 +0100 Subject: [PATCH 2/4] fixed markdown internal links --- protocole.md | 107 ++++++++++++++++++++++++--------------------------- 1 file changed, 50 insertions(+), 57 deletions(-) diff --git a/protocole.md b/protocole.md index 608fc7e..8477837 100644 --- a/protocole.md +++ b/protocole.md @@ -1,27 +1,21 @@ -[WARNING] Deprecated: markdown_github. Use gfm instead. Proposition de protocole ======================== -Proposition de protocole pour la communication inter-serveurs/clients -pour le projet de chat textuel. +Proposition de protocole pour la communication inter-serveurs/clients pour le projet de chat textuel. -Quelques règles pour assurer le bon fonctionnement du protocole : +Quelques règles pour assurer le bon fonctionnement du protocole : - Chaque ligne se termine par les caractères `\r\n`. -- Un nom d’utilisateur ne peut contenir que des caractères - alphanumériques (a-z, A-Z, 0-9). +- Un nom d’utilisateur ne peut contenir que des caractères alphanumériques (a-z, A-Z, 0-9). Connexion au serveur -------------------- -Gestion de l’arrivée des utilisateurs sur le serveur (choix du nom -d’utilisateur et notification des clients). +Gestion de l’arrivée des utilisateurs sur le serveur (choix du nom d’utilisateur et notification des clients). ### Requête 1.1 -Connexion sans nom d’utilisateur fournit par le client, `` -devant être remplacé par la version utilisée par le cliet (tel que `0.5` -ou `1.0`). Client vers serveur. +Connexion sans nom d’utilisateur fournit par le client, `` devant être remplacé par la version utilisée par le client (tel que `0.5` ou `1.0`). Client vers serveur. ``` text PROT CONNECT NEW @@ -35,15 +29,11 @@ Connexion au serveur mentionnant le nom d’utilisateur PROT CONNECT USER ``` -Selon si la connexion est établie avec ce nom d'utilisateur, la -[1.1.4](#*Requête 1.4) ou [1.1.5](#*Requête 1.5) sera renvoyée. Si la -requête [1.1.5](#*Requête 1.5) est renvoyée, la [1.1.2](#*Requête 1.2) -suivra immédiatement après. +Selon si la connexion est établie avec ce nom d'utilisateur, la [requête 1.4](#requête-14) ou la [requête 1.5](#requête-15) sera renvoyée. Si la requête [requête 1.5](#requête-15) est renvoyée, la [requête 1.2](#requête-12) suivra immédiatement après. ### Requête 1.3 -Réponse à cette requête du serveur vers le client (serveur vers client), -requête du nom d'utilisateur. +Réponse à cette requête du serveur vers le client (serveur vers client), requête du nom d'utilisateur. ``` text PROT REQ NAME @@ -51,8 +41,7 @@ PROT REQ NAME ### Requête 1.4 -Réponse à la requête du serveur (client vers serveur), envoi du nom -d’utilisateur. +Réponse à la requête du serveur (client vers serveur), envoi du nom d’utilisateur. ``` text PROT NAME @@ -60,8 +49,7 @@ PROT NAME ### Requête 1.5 -Réponse du serveur si l'enregistrement du nom d'utilisateur s’est bien -déroulé (serveur vers client) +Réponse du serveur si l'enregistrement du nom d'utilisateur s’est bien déroulé (serveur vers client) ``` text PROT OK WELCOME @@ -69,9 +57,7 @@ PROT OK WELCOME ### Requête 1.6 -Réponse du serveur si l'enregistrement du nom d'utilisateur a rencontré -une erreur (nom déjà utilisé,…) (serveur vers client). La -[1.1.2](#*Requête 1.2) est envoyée vers le client. +Réponse du serveur si l'enregistrement du nom d'utilisateur a rencontré une erreur (nom déjà utilisé,…) (serveur vers client). La [requête 1.2](#requête-12) est envoyée vers le client. ``` text PROT FAILURE @@ -79,9 +65,7 @@ PROT FAILURE ### Requête 1.7 -Conjointement à la [1.1.4](#*Requête 1.4), cette requête sera envoyée à -tout autre client connecté pour les notifier de la connexion d’un nouvel -utilisateur. +Conjointement à la [requête 1.4](#requête-14), cette requête sera envoyée à tout autre client connecté pour les notifier de la connexion d’un nouvel utilisateur. ``` text JOIN @@ -102,8 +86,7 @@ PROT BYE ### Requête 2.2 -Envoi du serveur vers chaque client de la notification de déconnexion -d'un client +Envoi du serveur vers chaque client de la notification de déconnexion d'un client ``` text PROT LOGOUT @@ -112,9 +95,7 @@ PROT LOGOUT Ping ---- -Vérification de la connexion des clients avec le serveur. Chaque minute, -la requête [1.3.1](#*Requête 3.1) est envoyée à chaque client qui ont -tous trois secondes pour répondre avec la [1.3.2](#*Requête 3.2). +Vérification de la connexion des clients avec le serveur. Chaque minute, la requête [requête 3.1](#requête-31) est envoyée à chaque client qui ont tous trois secondes pour répondre avec la [requête 3.2](##requête-32). ### Requête 3.1 @@ -126,49 +107,61 @@ PROT PING ### Requête 3.2 -Envoi de la réponse du client au serveur pour la [1.3.1](#*Requête 3.1) +Envoi de la réponse du client au serveur pour la [requête 3.1](#requête-31) ``` text PROT PONG ``` -Échange de messages -------------------- - -### Messages publics +## Échange de messages +### Échange de messages publics #### Requête 4.1.1 - - Envoi depuis le client vers le serveur d’un message public - - ``` text - PROT MSG - ``` +Envoi depuis le client vers le serveur d’un message public +``` text +PROT MSG +``` #### Requête 4.1.2 - Transmission d’un message d’un client vers les autres clients +Transmission d’un message d’un client vers les autres clients +``` text +PROT FROM MSG +``` + +### Échange de messages privés + +#### Requête 4.2.1 + +Transmission d’un message d’un client vers un autre client uniquement, spécifié par son nom d’utilisateur (client vers serveur) + +``` text +PROT PRIV TO MSG +``` + +#### Requête 4.2.2 + +Transmission d’un message d’un client vers un autre client uniquement, spécifié par son nom d’utilisateur (serveur vers client) + +``` text +PROT PRIV FROM MSG +``` - ``` text - PROT FROM MSH - ``` ### Messages privés #### Requête 4.2.1 - Transmission d’un message d’un client vers un autre client - uniquement, spécifié par son nom d’utilisateur (client vers serveur) +Transmission d’un message d’un client vers un autre client uniquement, spécifié par son nom d’utilisateur (client vers serveur) - ``` text - PROT PRIV TO MSG - ``` +``` text +PROT PRIV TO MSG +``` #### Requête 4.2.2 - Transmission d’un message d’un client vers un autre client - uniquement, spécifié par son nom d’utilisateur (serveur vers client) +Transmission d’un message d’un client vers un autre client uniquement, spécifié par son nom d’utilisateur (serveur vers client) - ``` text - PROT PRIV FROM MSG - ``` +``` text +PROT PRIV FROM MSG +``` From e38fc67814310255fbcbd8456c1e7524a071ce46 Mon Sep 17 00:00:00 2001 From: Phuntsok Drak-pa Date: Mon, 26 Feb 2018 12:57:23 +0100 Subject: [PATCH 3/4] minor fix --- protocole.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocole.md b/protocole.md index 8477837..32b13c3 100644 --- a/protocole.md +++ b/protocole.md @@ -95,7 +95,7 @@ PROT LOGOUT Ping ---- -Vérification de la connexion des clients avec le serveur. Chaque minute, la requête [requête 3.1](#requête-31) est envoyée à chaque client qui ont tous trois secondes pour répondre avec la [requête 3.2](##requête-32). +Vérification de la connexion des clients avec le serveur. Chaque minute, la requête [requête 3.1](#requête-31) est envoyée à chaque client qui ont tous trois secondes pour répondre avec la [requête 3.2](#requête-32). ### Requête 3.1 From 7b41ef759a48234067ba221a4beafa1110becd9b Mon Sep 17 00:00:00 2001 From: Phuntsok Drak-pa Date: Tue, 27 Feb 2018 12:11:50 +0100 Subject: [PATCH 4/4] =?UTF-8?q?Mise=20=C3=A0=20jour=20du=20protocole?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocole.md | 85 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 27 deletions(-) diff --git a/protocole.md b/protocole.md index 32b13c3..a0567dc 100644 --- a/protocole.md +++ b/protocole.md @@ -8,6 +8,12 @@ Quelques règles pour assurer le bon fonctionnement du protocole : - Chaque ligne se termine par les caractères `\r\n`. - Un nom d’utilisateur ne peut contenir que des caractères alphanumériques (a-z, A-Z, 0-9). +Liste d’abbréviations : + +- "C" : client unique +- "A" : ensemble des clients +- "S" : serveur + Connexion au serveur -------------------- @@ -15,7 +21,9 @@ Gestion de l’arrivée des utilisateurs sur le serveur (choix du nom d’utilis ### Requête 1.1 -Connexion sans nom d’utilisateur fournit par le client, `` devant être remplacé par la version utilisée par le client (tel que `0.5` ou `1.0`). Client vers serveur. +C->S + +Connexion sans nom d’utilisateur fournit par le client, `` devant être remplacé par la version utilisée par le client (tel que `0.5` ou `1.0`). ``` text PROT CONNECT NEW @@ -23,6 +31,8 @@ PROT CONNECT NEW ### Requête 1.2 +C->S + Connexion au serveur mentionnant le nom d’utilisateur ``` text @@ -33,14 +43,18 @@ Selon si la connexion est établie avec ce nom d'utilisateur, la [requête 1.4]( ### Requête 1.3 +S->C + Réponse à cette requête du serveur vers le client (serveur vers client), requête du nom d'utilisateur. ``` text -PROT REQ NAME +PROT NAME REQ ``` ### Requête 1.4 +C->S + Réponse à la requête du serveur (client vers serveur), envoi du nom d’utilisateur. ``` text @@ -49,26 +63,42 @@ PROT NAME ### Requête 1.5 -Réponse du serveur si l'enregistrement du nom d'utilisateur s’est bien déroulé (serveur vers client) +S->C + +Réponse du serveur si l'enregistrement du nom d'utilisateur s’est bien déroulé, immédiatement suivi par la [requête 1.9](#requête-18) ``` text -PROT OK WELCOME +PROT NAME OK ``` ### Requête 1.6 -Réponse du serveur si l'enregistrement du nom d'utilisateur a rencontré une erreur (nom déjà utilisé,…) (serveur vers client). La [requête 1.2](#requête-12) est envoyée vers le client. +S->C + +Réponse du serveur si l'enregistrement du nom d'utilisateur a rencontré une erreur (nom déjà utilisé,…) (serveur vers client). ``` text -PROT FAILURE +PROT NAME FAILURE ``` ### Requête 1.7 +S->A + Conjointement à la [requête 1.4](#requête-14), cette requête sera envoyée à tout autre client connecté pour les notifier de la connexion d’un nouvel utilisateur. ``` text -JOIN +PROT JOIN +``` + +### Requête 1.8 + +S->C + +Requête confirmant au client sa connexion + +``` text +PROT WELCOME ``` Déconnexion du serveur @@ -78,7 +108,12 @@ Gestion du départ des utilisateurs du serveur ### Requête 2.1 -Envoi du client vers le serveur le notifiant de sa déconnexion +C->S +S->C + +Du client vers le serveur : notification de déconnexion du client au serveur. + +Du serveur vers le client : confirmation de déconnexion du client depuis le serveur. ``` text PROT BYE @@ -86,7 +121,9 @@ PROT BYE ### Requête 2.2 -Envoi du serveur vers chaque client de la notification de déconnexion d'un client +S->A + +Notification aux clients de la déconnexion d’un autre client. ``` text PROT LOGOUT @@ -99,6 +136,8 @@ Vérification de la connexion des clients avec le serveur. Chaque minute, la req ### Requête 3.1 +S->A + Envoi d’un ping du serveur vers chaque client. ``` text @@ -107,6 +146,8 @@ PROT PING ### Requête 3.2 +C->S + Envoi de la réponse du client au serveur pour la [requête 3.1](#requête-31) ``` text @@ -117,6 +158,9 @@ PROT PONG ### Échange de messages publics #### Requête 4.1.1 + +C->S + Envoi depuis le client vers le serveur d’un message public ``` text PROT MSG @@ -124,6 +168,8 @@ PROT MSG #### Requête 4.1.2 +S->A + Transmission d’un message d’un client vers les autres clients ``` text PROT FROM MSG @@ -133,24 +179,7 @@ PROT FROM MSG #### Requête 4.2.1 -Transmission d’un message d’un client vers un autre client uniquement, spécifié par son nom d’utilisateur (client vers serveur) - -``` text -PROT PRIV TO MSG -``` - -#### Requête 4.2.2 - -Transmission d’un message d’un client vers un autre client uniquement, spécifié par son nom d’utilisateur (serveur vers client) - -``` text -PROT PRIV FROM MSG -``` - - -### Messages privés - -#### Requête 4.2.1 +C->S Transmission d’un message d’un client vers un autre client uniquement, spécifié par son nom d’utilisateur (client vers serveur) @@ -160,6 +189,8 @@ PROT PRIV TO MSG #### Requête 4.2.2 +S->C + Transmission d’un message d’un client vers un autre client uniquement, spécifié par son nom d’utilisateur (serveur vers client) ``` text