Einzelnen Beitrag anzeigen

romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#7

AW: IdTCPServer/IdTCPClient: Verbindung ablehnen?

  Alt 27. Apr 2013, 18:15
Eins kapiere ich nocht nicht ganz.

Delphi-Quellcode:
procedure TMyIdTCPServer.OnExecute(AContext: TIdContext);
var
  Msg: string;
begin
  if not TMyContext(AContext).LoggedIn then
  begin
    // warte maximal 2000 Millisekunden
    Msg := AContext.Connection.IOHandler.ReadLn(2000);
    // Zeitüberschreitung?
    if AContext.Connection.IOHandler.ReadLnTimedOut then
    begin
      // lasse Indy die Connection beenden
      raise EIdException.Create('Received no login message');
    end else begin
      // prüfe, ob Login gültig und setze AContext.LoggedIn
      ...
    end;
  end
  else
  begin
    // bereits angemeldet, andere Aktionen ausführen
  end;
end;
Und zwar nehmen wir an, der Client ist LoggedIn und dann bricht die Verbindung plötzlich ab, warum auch immer. Dann ist der AContext, mit dem im o.g. Beispiel TMyContext identifiziert wird, nicht mehr gültig oder verstehe ich das falsch? Der Client stellt die Verbindung wieder her und bekommt einen neuen AContext zugewiesen. Wenn das so ist, wofür dann die if not TMyContext(AContext).LoggedIn ? Natürlich kann ich hinter LoggenIn-Property eine Funktion bauen, die überprüft, ob der Client bereits eingeloggt ist. Dafür benotige ich aber wiederum die Login-Daten des Clients, die erst in Msg := AContext.Connection.IOHandler.ReadLn(2000) abgefragt werden.
  Mit Zitat antworten Zitat