SERVEUR CHAT COMPLET (+ CLIENT) AVEC PROTOCOLE

Signaler
Messages postés
44
Date d'inscription
samedi 30 novembre 2002
Statut
Membre
Dernière intervention
13 mars 2005
-
Messages postés
43
Date d'inscription
jeudi 26 février 2009
Statut
Membre
Dernière intervention
28 août 2009
-
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

Messages postés
43
Date d'inscription
jeudi 26 février 2009
Statut
Membre
Dernière intervention
28 août 2009

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
Messages postés
43
Date d'inscription
jeudi 26 février 2009
Statut
Membre
Dernière intervention
28 août 2009

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
Messages postés
2835
Date d'inscription
lundi 11 août 2003
Statut
Modérateur
Dernière intervention
16 décembre 2006
10
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 !
@+
Messages postés
44
Date d'inscription
samedi 30 novembre 2002
Statut
Membre
Dernière intervention
13 mars 2005

ce serait cool de me dire comment t'as fait ton inscription merci j'ai pas trop callé