Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi FTP Download bricht ab (https://www.delphipraxis.net/97747-ftp-download-bricht-ab.html)

Andidreas 15. Aug 2007 13:47


FTP Download bricht ab
 
aloha zusammen...

ich hab mir in denn letzten tagen ein tool gebastelt was daten auswertet die auf einem ftp server liegen...

das programm läuft folgender massen ab...

- user wählt die files aus die er downloaden möchte und startet die auswertung...
- als erstes erstellt das programm in einem .txt file eine liste der files die heruntergeladen werden müssen...
- danach lädt das programm jedes file vom ftp herunter (über indy10)
--> und genau an dieser stelle hängt sich mein programm manchmal auf manchmal nicht, und ich hab leider keine
ahnung warum :pale:

hier ist mal der source code vom download
Delphi-Quellcode:
//******************************************************************************
// prDownload --> Download File from FTP Client                               *
//******************************************************************************

procedure TMain_Form.prDownload(sFile, sPath : String);

begin

  Application.ProcessMessages;
  FTP.Noop;
  FTP.Get(sFile, sPath, True);
  lstbox_history.Items.Add('File ' + sFile + ' Downloaded and Saved in ..\Temp_Files\');
  FTP.Noop;
  Application.ProcessMessages;

end;
diese prozedur muss nach jedem gelesenen satz aus dem txt file gestartet werden...


hat jemand vielleicht eine idee warum mein progarmm sich aufhängt???
könnte es am ftp liegen???

Andidreas 16. Aug 2007 13:28

Re: FTP Download bricht ab
 
*push*

shmia 16. Aug 2007 13:34

Re: FTP Download bricht ab
 
Was passiert, wenn du mit einem ganz normalen FTP - Client (z.B. WS_FTP) die Dateien in gleicher Reihenfolge runterlädst ?

hoika 16. Aug 2007 13:36

Re: FTP Download bricht ab
 
Hallo,

und was passiert, wenn du deinen eigenen Rechner
als ftp-Server nimmst (localhost)

FTP.Get ist doch eine Funktion mit Fehlercode ?
Was steht dort drin ?

Heiko

Andidreas 16. Aug 2007 14:08

Re: FTP Download bricht ab
 
@shima...
nein habe ich noch nicht probiert... wäre aber mal ein versuch wert!

@hoika
ne denn returncode frage ich nicht ab bei meinem get befehl...
müsste ich mich mal nach einem bsp. umschauen wie das funktioniert...


was mich aber wundert, ist das der fehler immer nur sporadisch auftritt...
kann es sein das es auch an der i-net leitung liegt, das wenn diese ein schlechtes signal hat denn download unterbricht bzw. die verbindung trennt???

hoika 16. Aug 2007 14:35

Re: FTP Download bricht ab
 
Hallo,

Bsp ???

ich kenne Indy nicht, aber meistens ist es ein Integer,
der 0 ist, wenn alles OK war.
Delphi-Quellcode:
var
  iRet: Integer;
begin
  iRet:= ftp.Get();
  if iRet<>0 then
  begin
    argzzzzz
  end;
Sidn das immer die gleichen Dateien,
oder kommt der Fehler viell. nur bei bestimmten ?


Heiko

Andidreas 16. Aug 2007 15:28

Re: FTP Download bricht ab
 
ich hab vorhin mal kurz die beschreibung überflogen vom ftp.get befehl...
dort stand was von status = ftpReady, ftpAbbort etc.

die frage bei welchen files es passiert kann ich im moment noch nicht beantworten...

ich hab meinen source code jetzt folgender maßen geändert:

Delphi-Quellcode:
//******************************************************************************
// --> fnDownloadFile <-- Download a File from FTP Server                     *
//******************************************************************************

function TMain_Form.fnDownloadFile(sFileName, sPath : String) : Boolean;

var
bl : Boolean;

begin

  // Download File
  Application.ProcessMessages;
  FTP.Noop;
  Try
    FTP.Get(sFileName, sPath, True, False);
    fnDownloadFile := True;
  Except
    //MessageDlg('Could Not Download the Selected File!', mtError, [mbOK], 0);
    fnDownloadFile := False;
  End;
  FTP.Noop;
  Application.ProcessMessages;

end;
an der stelle wo ich den retourn code dieser funktion abfrage, geb ich dann eine fehlermeldung in eine listbox aus falls der download nicht geklappt haben solte (inkl. dateiname)...
so kann ich dann mal kontrollieren bei welchen files der fehler auftritt...


ftp server trennen doch die verbindung automatisch wenn längere zeit kein befehl an denn ftp server geschickt wird...
unterbinden kann ich das ja über denn 'noop' befehl...
während eines downloads, kann ich diesen befehl aber nicht absetzen... kann es sein das wenn der dwonload über das limit hinausgeht wo er die verbindung trennt, auch während eines dwonloads die verbindung trennen würde???

shmia 16. Aug 2007 15:42

Re: FTP Download bricht ab
 
Zitat:

Zitat von Andidreas
ftp server trennen doch die verbindung automatisch wenn längere zeit kein befehl an denn ftp server geschickt wird...
unterbinden kann ich das ja über denn 'noop' befehl...
während eines downloads, kann ich diesen befehl aber nicht absetzen... kann es sein das wenn der dwonload über das limit hinausgeht wo er die verbindung trennt, auch während eines dwonloads die verbindung trennen würde???

Wenn der Server falsch programiert oder gemein ist, kann das durchaus passieren.
Befehle werden ja über Port 21 abgewickelt; Daten laufen defaultmässig über Port 20.
Wenn der Server nur Port 21 überwacht und und nicht berücksichtigt, dass über Port 20 gerade Daten laufen...
Du kannst aber auch den Passiv-Mode einschalten, dann laufen Befehle & Daten nur über Port 21.
Damit kannst du dir auch die NOOPs sparen, denn dein Programm wird ja wohl keine Pausen einlegen.

Andidreas 16. Aug 2007 16:00

Re: FTP Download bricht ab
 
wie der server eingestellt ist weiß ich nicht! ich greife lediglich auf ihn zu!

Zitat:

Zitat von shmia
Du kannst aber auch den Passiv-Mode einschalten, dann laufen Befehle & Daten nur über Port 21.
Damit kannst du dir auch die NOOPs sparen, denn dein Programm wird ja wohl keine Pausen einlegen.

wie kann ich denn passive mode einschalten???

hmm doch das programm "kann" pausen einlegen.... es liegt immer am user der davor sitzt... er entscheidet nämlich wann daten vom ftp geholt werden und wie oft...
die noops habe ich auch erst eingebaut als sich mal jemand beschwert hat, das eine fehlermeldung kam "connection reset by peer"


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:48 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