Bonjour,
J'essaie depuis plusieur jour de créer un application client serveur mais je rencontre quelques soucis.
J'initialise le composant comme ceci :
Donc j'ai deux événement à gérer qui sont codés comme ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 // Configurations. FTCPServeur.LocalHost := '127.0.0.1'; FTCPServeur.LocalPort := '10000'; FTCPServeur.BlockMode := bmThreadBlocking; // Evénements. FTCPServeur.OnGetThread := EvtGetThreadEvent; FTCPServeur.OnAccept := EvtOnAccept;
TC6CCIPClient étant une fille de la classe TClientSocketThread avec une surcharge de la méthode execute.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 //----------------------------------------------------------------------------- // Création d'un thread pour le nouveau client. //----------------------------------------------------------------------------- procedure TC6CCServer.EvtGetThreadEvent(Sender : TObject; var ClientSocketThread : TClientSocketThread); begin ClientSocketThread := TC6CCIPClient.Create(FTCPServeur.ServerSocketThread); end; //----------------------------------------------------------------------------- // Après acceptation de la connexion d'un client. //----------------------------------------------------------------------------- procedure TC6CCServer.EvtOnAccept(Sender : TObject; ClientSocket : TCustomIpClient); begin // Message de bienvenue. ClientSocket.Sendln('Bonjour !'); end;
Je me connecte en telnet sur mon serveur. Pas de soucis je passe bien dans les deux événements et le message 'Bonjour' me parvient correctement. Mais tout de suite après la connexion est coupée alors que je souhaiterais la maintenir tant que le client n'a pas envoyée une commande de déconnexion.
Il y a aussi un truc bizarre sur l'objet TClientSocketThread. L'aide delphi à propos du constructeur dit ça :
alors que le code de cette classe n'accepte qu'un seul paramètre de type TServerSocketThread, je trouve ça étrange.Syntaxe Delphi :
constructor Create (ServerSocketThread: TServerSocketThread; ClientSocket: TCustomIpClient);
Merci d'avance pour vos réponses et je vous souhaite une agréable journée.
Partager