Bonjour,
j'ai une petite application client/serveur qui utilise les composants idTCPclient et idTCPserver.
J'ai un problème lorsqu'il faut terminer la connexion du serveur alors qu'un client est encore connecté.
Le composant créé deux threads IdTCPServerScheduler et IdTCPServerListener.
La fonction idTCPServer.active := false arrive à terminer le thread IdTCPServerListener mais je n'arrive pas terminer correctement le thread IdTCPServerScheduler d'où un freeze de l'application.
J'utilise l'évenement Execute pour récupérer les infos envoyées des clients en voici le code :
procedure TCLS_TCP_Client_Serveur.Serveur_TCPExecute(AContext: TIdContext);
var message_recu : string;
begin
If AContext.Connection.Connected then
begin
try
message_recu := AContext.Connection.IOHandler.ReadLn(chr(Caractere_fin_ligne_serveur),500);
If message_recu<>'' then
begin
Mem_Serveur.clear;
Mem_Serveur.Lines.Add(message_recu);
FMessage_Recu := message_recu;
If Assigned(OnMessage_Recu) then
begin
OnMessage_Recu(message_recu);
end;
If Connexion_Automatique and (Message_recu ='''Adresse_IP''') then
begin
Connexion_Automatique := false;
end;
end;
except
Affiche_Message_Erreur(MsER_Erreur_Reception, Nom_Connexion);
end;
end;
end;
Si quelqu'un c'est comment terminé le thread IdTCPServerScheduler, ce serait sympa .