Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   FTP Fehlermeldung vom Server beim Client (indy) (https://www.delphipraxis.net/179182-ftp-fehlermeldung-vom-server-beim-client-indy.html)

Golli18 19. Feb 2014 10:04

Delphi-Version: XE5

FTP Fehlermeldung vom Server beim Client (indy)
 
Hallo Liebe Forum,

Ich wollte fragen, ob es möglich ist eine Fehlermeldung von einem FTP Server(Indy FTP Server) zu einen FTP-Client (Indy) zu senden?

Mit freundlichen Grüßen

Golli

mjustin 19. Feb 2014 10:16

AW: FTP Fehlermeldung vom Server beim Client (indy)
 
FTP verwendet synchrone Kommunikation: der Server erhält eine Anfrage vom Client und beantwortet diese. Eine Fehlermeldung zu senden ist im Protokoll also nur als Antwort auf eine Client-Anfrage vorgesehen.

Der Server kann also nicht den ersten Schritt tun und 'wenn er will' eine Fehlermeldung senden.

Golli18 19. Feb 2014 10:20

AW: FTP Fehlermeldung vom Server beim Client (indy)
 
Okay

Kann ich den Client aber z.B. Eine "MessegaBox" Schicken wenn er versucht sich in den Server einzuloggen?


MFG

Golli

Der schöne Günther 19. Feb 2014 10:24

AW: FTP Fehlermeldung vom Server beim Client (indy)
 
Was du suchst ist die Property
Delphi-Quellcode:
Greeting
. Bzw. den Knopf für die Forensuche.

Golli18 19. Feb 2014 10:46

AW: FTP Fehlermeldung vom Server beim Client (indy)
 
Hey

irgendwie hilft mir das nicht weiter.
Vielleicht kannst du mir ja an anstos geben.

Ich will versuchen wenn der Client sich einloggt und dabei ein Fehler auftritt der Client diese Meldung bekommt die ich ihm geben will.

MFG

Golli

mjustin 19. Feb 2014 13:38

AW: FTP Fehlermeldung vom Server beim Client (indy)
 
Zitat:

Zitat von Golli18 (Beitrag 1248498)
Ich will versuchen wenn der Client sich einloggt und dabei ein Fehler auftritt der Client diese Meldung bekommt die ich ihm geben will.

RFC 959 (der FTP Standard) besagt, dass eine FTP Antwort des Servers aus einem dreistelligen numerische Code, gefolgt von (optionalem) Text besteht. Der Client kann, aber muss diesen Text nicht weiter verarbeiten (zum Beispiel dem Benutzer anzeigen). Falls Indy FTP Clients eingesetzt werden, kann man diese Beschränkung natürlich durch Anpassungen des Quelltextes umgehen.

In Indy 10.6 enthält die TIdFTPServer Klasse ein Event namens OnLoginFailureBanner, es wird bei einer erfolglosen Anmeldung indirekt aus der Methode DisconUser aufgerufen:

Delphi-Quellcode:
procedure TIdFTPServer.DisconUser(ASender: TIdCommand);
begin
  ASender.Disconnect := True;
  ASender.Reply.SetReply(421, RSFTPClosingConnection);
  if Assigned(OnLoginFailureBanner) then begin
    OnLoginFailureBanner(TIdFTPServerContext(ASender.Context), ASender.Reply);
    ASender.Reply.SetReply(421, ASender.Reply.Text.Text);
  end;
end;
Damit sollte es gehen, man muss der Komponente einen entsprechenden Ereignishandler für OnLoginFailureBanner zuweisen.
OnLoginFailureBanner ist vom Typ TIdOnBanner:
Delphi-Quellcode:
TIdOnBanner = procedure(ASender: TIdFTPServerContext; AGreeting : TIdReply) of object;


Daher würde der Eventhandler so oder ähnlich aussehen:
Delphi-Quellcode:
procedure IdFTServer1.OnLoginFailureBanner(ASender: TIdFTPServerContext; AGreeting : TIdReply);
begin
  AGreeting.Text.Text := 'Die Anmeldung war leider nicht erfolgreich. Das tut uns leid.';
end;

Golli18 19. Feb 2014 13:41

AW: FTP Fehlermeldung vom Server beim Client (indy)
 
Okay

Vielen Dank werde es mal ausprobieren.


MFG

Golli


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz