AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Wie richtig einen FTP socket (client) schliesen...!?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie richtig einen FTP socket (client) schliesen...!?

Ein Thema von m0sch3r · begonnen am 3. Feb 2005 · letzter Beitrag vom 3. Feb 2005
Antwort Antwort
Seite 1 von 2  1 2      
m0sch3r

Registriert seit: 29. Mär 2004
121 Beiträge
 
Delphi 7 Enterprise
 
#1

Wie richtig einen FTP socket (client) schliesen...!?

  Alt 3. Feb 2005, 12:25
Der FTP socket (client) wird folgendermaßen geschlossen
Delphi-Quellcode:
procedure FTPAfterGet(self : TObject; ASender: TObject; VStream: TStream);
var
    i, n : integer;
begin
      try
      [u] TidFTP(ASender).Disconnect;[/u]
      except
      form1.Debug_Memo.Lines.Add('Error while closed FTPClientSocket' + formatDateTime('hh:nn:ss:', now));
      end; //try
      form1.Debug_Memo.Lines.Add('FTPClientAfterGet' + formatDateTime('hh:nn:ss:', now));
end;
Leider entsteht auf der FTP serverseite ein EConnClosedGracefuly exception (in den Debug Optionen habe ich sie eingeschlossen - trotzdem kommt wieder) oder eine EAccessViolation was auf ein nicht initialisiertes objeckt hinweist. diese beiden Fehlermeldungen entschtehen in Abwechlung auf der Serverseite beim schliesen der FTPclient verbindung.

Liegt es vieleicht an dem zeitpunkt wo der FTP client geschlossen wird (afterget), weil der socket noch zur der Zeit daten dahin schreibt...!?
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Wie richtig einen FTP socket (client) schliesen...!?

  Alt 3. Feb 2005, 12:30
mit
TidFTP(ASender).Quit; dürfte es keine Exception geben.

hth

be blessed
  Mit Zitat antworten Zitat
m0sch3r

Registriert seit: 29. Mär 2004
121 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Wie richtig einen FTP socket (client) schliesen...!?

  Alt 3. Feb 2005, 12:39
kann es sein das duch verwenden des quit anstatt disconnect, das "OnDisconnect" Ereigniss auf der SErver seite nicht ausgeführt wird....!?

beim mir jedenfahls nicht...
  Mit Zitat antworten Zitat
m0sch3r

Registriert seit: 29. Mär 2004
121 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Wie richtig einen FTP socket (client) schliesen...!?

  Alt 3. Feb 2005, 12:55
Das Ereignis wird ausgeführt aber das Argument "AThread: TIdPeerThread" ist lehr....
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Wie richtig einen FTP socket (client) schliesen...!?

  Alt 3. Feb 2005, 12:56
Wie man sieht wird bei Quit auch Disconnect ausgefürht.

Delphi-Quellcode:
procedure TIdFTP.Quit;
begin
  if Connected then begin
    IOHandler.WriteLn('QUIT'); {do not localize}
  end;
  Disconnect;
end;
Auf der Serverseite wird auch das OnDisconnect Eregnis ausgelöst, jedenfalls bei Indy 9.0.14 orso...
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: Wie richtig einen FTP socket (client) schliesen...!?

  Alt 3. Feb 2005, 13:01
Also die Bindings sind wohl schon freigegeben. Aus diesem Grund benutze ich AThread.Data für Protokollzwecke.
Dort speichere ich die IP beim OnConnect.
  Mit Zitat antworten Zitat
m0sch3r

Registriert seit: 29. Mär 2004
121 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Wie richtig einen FTP socket (client) schliesen...!?

  Alt 3. Feb 2005, 13:02
ja stimmt, aber was fur mich wichtig war war im onDissconect (SErver) eregnis die IP aus dem Argument (AThread: TIdPeerThread) aus den UploadSchlange raus zufiltern, jetz gibt es zwar keine häsligen messages, dafur aber bleiben die IP's weiter in Uploadschlange, nach dem disconnect...(
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

Re: Wie richtig einen FTP socket (client) schliesen...!?

  Alt 3. Feb 2005, 13:05
Du solltest den Thread bei OnDisconnect noch freigeben:
IdThreadMgrDefault.ReleaseThread(AThread); Edit:
Bei Indy 10.0.52 funzt:
IdFTPServer.Contexts.Remove(AContext);
  Mit Zitat antworten Zitat
m0sch3r

Registriert seit: 29. Mär 2004
121 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Wie richtig einen FTP socket (client) schliesen...!?

  Alt 3. Feb 2005, 14:30
Wie kann ich anstat eines Object nur ein integer dem Athread.Data hinzufuegen...!?
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

Re: Wie richtig einen FTP socket (client) schliesen...!?

  Alt 3. Feb 2005, 17:46
Erstell einfach eins das nur 'n Integer hat (oder was auch immer Du sonst noch brauchst)

Delphi-Quellcode:
TDataObject = class(TObject)
  public
    einInteger : Integer;
  end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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