Wenn ich mich mit einem TIdTCPClient zu einem TIdTCPServer verbinde und in weiterer folge den Server beende, dann wird der OnDisconnect-Event des Clients nicht aufgerufen.
Wenn ich clientseitig einen Reader-Thread einsetze, dann wird zumindest OnStatus aufgerufen, aber so will ich das nicht machen. Meine Kommunikation mit dem Server ist sehr primitiv, die läuft völlig linear, kommt ohne Threads aus.
Zum testen, 2 apps. In der 2. App, dem Client, würde ich gern einene Evetn für das OnDisconnect haben wenn man den Server schliesst.
Danke!!!!
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
IdTCPServer1.DefaultPort:=47110;
IdTCPServer1.Active:=True;
end;
procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var s : string;
begin
Memo1.Lines.Add('Connected from '+AContext.Connection.Socket.Binding.PeerIP);
while True do
begin
s:=AContext.Connection.IOHandler.ReadLn;
Memo1.Lines.Add('Srv Rcv: '+s);
AContext.Connection.IOHandler.WriteLn('received string with length '+IntToStr(length(s)));
end;
end;
und
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
IdTCPClient1.Host:='127.0.0.1';
IdTCPClient1.Port:=47110;
IdTCPClient1.Connect;
end;
procedure TForm1.Button1Click(Sender: TObject);
var s : string;
begin
IdTCPClient1.IOHandler.WriteLn(Edit1.Text);
s:=IdTCPClient1.IOHandler.ReadLn;
Memo1.Lines.Add('Client received : '+s);
end;