Bonjour à tous !
Je suis bloquer avec l'utilisation des composants: IdTCPServer et IdTCPClient, en faite j'essai de mettre en place un système de chat multipost avec authentification. Je m'explique, chaque client doit s'authentifier par un pseudo et un mot de passe pour se connecter au serveur, le serveur à son tour doit chercher le client dans la base de données, si les informations fournies par le client sont correctes, le serveur enverra un code (ex: 'ok') pour que le client accède à son compte; sinon, il enverra 'no' et le client n'aura pas accès à son compte.
Voici le code sources:
1) Côté Client :
2) Côté Serveur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 var rec: String; begin idtcpclient1.Host :='192.168.0.1'; idtcpclient1.Port :=1050; idtcpclient1.Connect; idtcpclient1.IOHandler.Writeln(pseudo.text); idtcpclient1.IOHandler.Writeln(password.text); rec :=idtcpclient1.IOHandler.Readln; if rec='ok' then "Accèder à son compte" else messagedlg('Authentification incorrecte', mtError, [mbOK],0);
Le problème est que quand le client envoie sa requête pour s'authentifier, l'application cliente se plante, je ne sais pas pourquoi, quelqu'un a-t-il une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 //Evénement OnCreate de la fiche idtcpserver1.Defaultport := 1050; idtcpserver1.Active := true; //Evénement OnExecute du serveur var pseudo, password: String; begin pseudo :=AContext.Connexion.IOHandler.Readln; password := AContext.Connexion.IOHandler.Readln; if pseudo "se trouve dans la bdd" then if pseudo "à pour mot de passe password" then if password "est correct à celui qui se trouve dans la bdd" then AContext.Connection.IOHandler.Writeln('ok'); else AContext.Connection.IOHandler.Writeln('no');
Aidez-moi s'il vous plaît, car ceci est mon sujet de TFC !
Merci encore pour vos aides aimables !
Cordialement,
Grégoire Mafutala.
Partager