SERVEUR CHAT COMPLET (+ CLIENT) AVEC PROTOCOLE

sweefty2 Messages postés 44 Date d'inscription samedi 30 novembre 2002 Statut Membre Dernière intervention 13 mars 2005 - 7 nov. 2003 à 17:25
rtjhlk Messages postés 43 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 28 août 2009 - 29 juin 2009 à 16:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/8201-serveur-chat-complet-client-avec-protocole

rtjhlk Messages postés 43 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 28 août 2009
29 juin 2009 à 16:47
BONJOUR
J'ai le probleme suivant:

I. X veut écrire à Y@BINI
II. X contacte son propre serveur d'envoi POU
III. POU trouve l'adresse du serveur BINIOU et lui demande un puzzle
IV. BINI fournit un puzzle
V. POU transmet ce puzzle à X
VI. X résout le puzzle et envoie la solution à POU
VII. POU envoie le mail de X et la solution du puzzle à BINI
VIII. BINI vérifie la solution et, si elle est correcte, stocke le message pour que Z puisse le lire (par exemple sur un serveur mail classique)

Voici un squelette pour la partie concernant les puzzle :

public class Puzzle{
private static final SIZE = ...;
private final byte[] puzzle;
public Puzzle(int difficulty){
// ce constructeur doit en principe générer le puzzle en fonction de
// la difficulté (taille du mail par exemple)
// mais on simplifie par :
puzzle = new byte[SIZE];
}
public byte[] getByte(){
return puzzle;
}
@Override
public boolean equals(Object o){
if(o instanceof Puzzle){
Puzzle p = (Puzzle)o;
return Arrays.equals(p.getByte(), puzzle);
}
return false;
}
}

Dans votre serveur :

public void sendPuzzle(Puzzle p,Socket service)throws IOException{
service.getOutputStream().write(p.getByte());
}
public boolean isCorrect(Puzzle p, Puzzle answer){
// en principe cette méthode doit vérifier que answer
// contient bien les mêmes pieces que p et qu'elles sont
// bien ordonnées pour respecter les règles eternity.
// on simplifie par :
return p.equals(answer);
}

dans votre client :

public void sendAnswer(Puzzle p, Socket server){
// en principe, le client doit résoudre le puzzle,
// on simplifie par :
server.getOutputStream().write(p.getByte());
}
j'ai compris le principe mais j'ai quelque difficulté pour coder.
merci
rtjhlk Messages postés 43 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 28 août 2009
29 juin 2009 à 16:29
Bonjour
j'ai le probleme suivant à resoudre
I. X veut écrire à Y@BINI
II. X contacte son propre serveur d'envoi POU
III. POU trouve l'adresse du serveur BINI et lui demande un puzzle
IV. BINI fournit un puzzle
V. POU transmet ce puzzle à X
VI. X résout le puzzle et envoie la solution à POU
VII. POU envoie le mail de X et la solution du puzzle à BINI
VIII. BINI vérifie la solution et, si elle est correcte, stocke le message pour que Z puisse le lire (par exemple sur un serveur mail classique)

Voici un squelette pour la partie concernant les puzzle :

public class Puzzle{
private static final SIZE = ...;
private final byte[] puzzle;
public Puzzle(int difficulty){
// ce constructeur doit en principe générer le puzzle en fonction de
// la difficulté (taille du mail par exemple)
// mais on simplifie par :
puzzle = new byte[SIZE];
}
public byte[] getByte(){
return puzzle;
}
@Override
public boolean equals(Object o){
if(o instanceof Puzzle){
Puzzle p = (Puzzle)o;
return Arrays.equals(p.getByte(), puzzle);
}
return false;
}
}

Dans votre serveur :

public void sendPuzzle(Puzzle p,Socket service)throws IOException{
service.getOutputStream().write(p.getByte());
}
public boolean isCorrect(Puzzle p, Puzzle answer){
// en principe cette méthode doit vérifier que answer
// contient bien les mêmes pieces que p et qu'elles sont
// bien ordonnées pour respecter les règles eternity.
// on simplifie par :
return p.equals(answer);
}

dans votre client :

public void sendAnswer(Puzzle p, Socket server){
// en principe, le client doit résoudre le puzzle,
// on simplifie par :
server.getOutputStream().write(p.getByte());
}

en fait j'ai compris le principe mais j'ai des soucis pour coder pour cela je vous demande de l'aide s'il vous plait .
merci
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
7 nov. 2003 à 18:09
Tu veux dire pour s'enregistrer sur le serveur surement !
Soit l'administrateur met le nom et le mot de passe dans le fichier prévut à cette effet, soit un nouveau client via un Telnet peut faire :
<NEW USER> pseudo mot_de_passe
pour s'enregistrer !
Peut-être que j'ai oublié de mettre cela dans le client graphique, mais je n'ai pas porté mon attention toute particulière sur le client graphique car si tu suis le protocole de connexion (qui est dans le répertoire misc du projet) n'importe qui peut réaliser un client entièrement compatible pour ce serveur !

Si t'as d'autres questions n'hésites pas !
@+
sweefty2 Messages postés 44 Date d'inscription samedi 30 novembre 2002 Statut Membre Dernière intervention 13 mars 2005
7 nov. 2003 à 17:25
ce serait cool de me dire comment t'as fait ton inscription merci j'ai pas trop callé
Rejoignez-nous