Einzelnen Beitrag anzeigen

Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 

TIdTCPClient ruft OnDisconnected nicht auf!

  Alt 27. Jan 2010, 11:28
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;
  Mit Zitat antworten Zitat