YooGoo

 
 
Bienvenue sur YooGoo
 
 

 
 
News

Description du Projet
Avancement du Projet
L'équipe
Photos du Projet et du reste
 
 

 
 
Téléchargement

Le Client
Le Serveur
Les Sources Serveur
Les Sources Client
Cahiers des Charges
Soutenance 1
Soutenance 2
Soutenance 3
Soutenance Finale
 
 

 
 
Contacts

Franck Tetzlaff CV Tessari Marco CV Bouhelier Stéphane CV Pouiller Jérôme CV
 
 

 
 

Conception

Le protocole est le langage qui permet à deux applications réseau de communiquer. Nous avons donc écrit un protocole de communication YooGoo. Si une application respecte le protocole, elle est en mesure de communiquer soit avec le client, soit avec le serveur de YooGoo. De plus, le protocole nous a permis de coder le serveur et le client indépendamment l'un de l'autre. Il suffit qu'ils respectent tous les deux le protocole pour qu'ils soient compatibles.

Lors de la conception du protocole, nous avons fait bien attention à ce que celui-ci soit "logique". Il ne faut pas qu'il y ait de fonctions incompatibles, ni de fonction double. Dans un protocole tel que le FTP et HTTP, il n'y a pas besoin de faire passer de l'information entre les clients. Ce n'est pas le cas dans Yoogoo. Chaque connexion au serveur est totalement indépendante. Comme YooGoo ressemble pour la plupart de ses fonctionnalités à l'IRC, nous nous sommes beaucoup inspiré du protocole de l'IRC (cf. RFC 1412 disponible sur www.YooGoo.com).

Principes

Nous avons fait en sorte que le protocole soit assez intuitif par le nom des fonctions et les paramètres. Le protocole n'est pas sensible à la case des caratères. Un utilisateur anglophone ne devrait pas avoir de problèmes pour comprendre le fonctionnement de Yoogoo seuleument en regardant le nom des fonctions. Nous nous sommes conformé à certaines règles qui permettent au protocole d'être logique. Par exemple, toutes les commande Commencant par CH permettent de changer un champ de son profile et les commandes commencant par CHCHAN permettent de changer un champ du profile d'un canal.

Lorsqu'une commande a besoin de renvoyer une information au client, le nom de ces fonction commence toujours par RPL_. Parfois, la commande a besoin de renvoyer plusieurs information au client (comme le resultat d'une recherche). On utilise alors une commande RPL_ pour chaque message d'information, puis, on termine avec RPL_END. Les commande commençant par RPL_END servent donc de balise de fin de transmition.

Il arrive que le serveur ait besoin d'envoyer un évènement au client. Le message est alors le même que la commande qui l'a provoqué.

Par exemple :

            Hargos -> msgChan Epita "Salut"
            Hargos <- msgChan Hargos Epita "Salut"
            Danao <- msgChan Hargos Epita "Salut"
            Zapata <- msgChan Hargos Epita "Salut"
            Folken <- msgChan Hargos Epita "Salut"
Nous avons hésité au début à envoyer des message plus évolué du genre "HARGOS" S'EST JOIN AU CANAL "EPITA". Ce genre de message offrait l'avantage d'être plus compréhensible pour l'utilisateur. Mais, le message aurait été plus difficile à parser pour le client. De plus, le message aurait été dans une seule langue et nous aurions eu des problèmes pour le traduire.

Retours d'erreurs

Pour chaque fonction un code d'erreur est renvoyé au client. Pour chaque commande envoyées, il y a un unique message d'erreur. Tant que le client n'a pas recu ce code, la commande est en cours d'execution. La valeur 00 signifie que tout s'est bien passé. Tous les codes $<$ 100 signifient que ce ne sont pas des erreurs fatales. Les erreurs comprises entre 400 et 499 signifient que l'erreur est fatale et que la fonction s'est terminée anormalement. Dans le protocole, les codes $<$ 100 commencent par INF_ et les code d'erreurs commence par ERR_. Ces codes d'erreur sont important car ils seront aussi utilisés en interne dans le serveur. Nous avons décidé de ne pas renvoyer d'erreur de la part du client. Effectivement, nous pensons qu'il n'est pas utile au serveur de savoir si la donnée est bien reconnue (il ne peut rien y faire s'il y a une erreur...). De plus, les messages envoyés par le serveur sont souvent des messages d'informations, il y a donc que très peu d'erreur possible. Je rappelle que TCP/IP possède un code de correction d'erreur et qu'une donnée arrive forcement à destination sans erreurs.

 
 

 
 
Documentation

FAQ
Conception du Protocole
SDK en Ligne
Télécharger SDK
Cahiers des Charges
Soutenance 1
Soutenance 2
Soutenance 3
Soutenance Finale

Comment marche...
Les Canaux
Le Profile
L'administration
La Base de Données
La Cryptographie
Winsock
Le Multithreading
 
 

 
 
Liens

Epita
EpiTarget
Hallucinetik - Zone 42
poupouill.fr.st Minosis (Spé C2)
La Spé C1
La Sup C1
 
 


 
 
made in Epita Powered by ApachePHP Scripting Language

All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2000 by YooGoo Team
Des remarques, des question, des choses pas claires? Hargos@ifrance.com