Einzelnen Beitrag anzeigen

Ykcim

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

AW: Wann wird TIdTCPServer.Locklist aktualisiert

  Alt 31. Okt 2024, 17:25
Hallo Olli73,

Zitat:
Da der Context im OnDisconnect als Parameter angegeben wird, ist klar, dass er noch nicht freigegeben sein kann.
Das ist logisch - habe ich nicht beachtet...

Zitat:
Da du aber den freigegebenen Context als Parameter hast, kannst du diesen ja "Ignorieren".
Das hört sich gut an! Bin ich nicht drauf gekommen...

Ich habe es jetzt so gelöst, dass ich im OnDisconnect AContext übergebe und im OnConnect nicht. Damit klappt es gut!
Delphi-Quellcode:
procedure TTCPSrvr.ReadLookList(Cols: TCols; var Rows: TRows; AContext: TIdContext = nil);
var List: TIdContextList;
      I: integer;
      exPeerIP: string;
      exPeerPort: integer;
begin
   SetLength(Rows, Length(Cols), 1);
   Rows[0,0]:= 'Alle';
   Rows[1,0]:= 'Alle';
   Rows[2,0]:= 'Alle';
   Try
      if Assigned(AContext) then begin
         exPeerIP:= AContext.Binding.PeerIP;
         exPeerPort:= AContext.Binding.PeerPort;
      end;
      List:= fIdTCPServer.Contexts.LockList;
      for I := 0 to List.Count -1 do begin
         if (TIdContext(List[I]).Binding.PeerPort <> exPeerPort) then 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;
      end;
   Finally
      fIdTCPServer.Contexts.UnlockList;
   End;
end;
Vielen Dank!

LG Patrick
Patrick
  Mit Zitat antworten Zitat