Ich hab hier eine Anwendung mit einem TIdTCPServer.
Im OnDisconnect würd ich gern nur eine Log-Meldung rausschreiben.
Wird die Verbindung allerdings vom Server und nicht vom Client getrennt (z.B. indem man Server.Active auf false setzt), dann friert die Anwendung sobald man im OnDisconnect was machen will
HILFE!
Ich hab hier mal ein extrem primitives Beispiel gebastelt:
Delphi-Quellcode:
procedure TForm1.butOnClick(Sender: TObject);
begin
IdTCPServer1.Active:=True;
Memo1.Lines.Add('Server listening on port '+IntToStr(IdTCPServer1.DefaultPort))
end;
procedure TForm1.butOffClick(Sender: TObject);
begin
IdTCPServer1.Active:=False;
Memo1.Lines.Add('Server disconnected.')
end;
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var s: string;
begin
s:=AContext.Connection.IOHandler.ReadLn;
Memo1.Lines.add('R< '+s);
AContext.Connection.IOHandler.WriteLn('Echo: '+s); // Auto-Echo
end;
procedure TForm1.IdTCPServer1Disconnect(AContext: TIdContext);
begin
// Wenn man die Zeile einkommentiert friert die Anwendung sobald man auf "Off" clickt
// Memo1.Lines.add('Client disconnected');
end;