Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
824 Beiträge
 
Delphi 10.4 Sydney
 
#1

Wann wird TIdTCPServer.Locklist aktualisiert

  Alt 31. Okt 2024, 09:25
Hallo Zusammen,

ich kann nicht herausfinden, wann die LockList von verbundenen Clients bei einem TIdTCPServer aktualisiert wird.
Ich möchte eine aktuelle Liste mit den IP-Adressen und PeerPorts der Clients auf der Oberfläche darstellen.

Wenn sich ein Client verbindet, klappt das im OnConnect Event wunderbar mit:
Delphi-Quellcode:
procedure TTCPSrvr.ReadLookList(Cols: TCols; var Rows: TRows);
var List: TIdContextList;
      I: integer;
begin
   SetLength(Rows, Length(Cols), 1);
   Rows[0,0]:= 'Alle';
   Rows[1,0]:= 'Alle';
   Rows[2,0]:= 'Alle';
   Try
      List:= fIdTCPServer.Contexts.LockList;
      for I := 0 to List.Count -1 do begin
         SetLength(Rows, Length(Cols), Length(Rows[0]) +1);
         Rows[0, Length(Rows[0]) -1]:= TIdContext(List[I]).Binding.PeerIP;
         Rows[1, Length(Rows[0]) -1]:= IntToStr(TIdContext(List[I]).Binding.PeerPort);
         Rows[2, Length(Rows[0]) -1]:= ' ';
      end;
   Finally
      fIdTCPServer.Contexts.UnlockList;
   End;
end;
Leider scheint das OnDisconnect Event aber abzulaufen, bevor die LockList aktualisiert wird, sodass der Client, der sich gerade abgemeldet hat, noch in der Liste erscheint. Wenn sich der nächste Client abmeldet, wird der vorherige abgemeldete Client nicht mehr angezeigt, der aktuell sich abgemeldete steht noch drin.

Weiß jemand, wann die LockList aktualisiert wird, sodass ich die LockList erst nach der Aktualisierung auslesen kann?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat