Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi FTP-Error # 10054 Connection Reset by peer (https://www.delphipraxis.net/129015-ftp-error-10054-connection-reset-peer.html)

Magier 11. Feb 2009 00:04


FTP-Error # 10054 Connection Reset by peer
 
Hey ho,

ich habe gerade ein ziemliches Problem mit meinem Programm das Dateien per FTP hochladen soll.

Folgendes zum Programm:
Das Programm soll zuerst von JPG Files 2 Thumbs machen (1. ca. 600*400, 2. ca. 125*100). Wenn die alle erstellt sind, sollen die 3 verschiedenen groessen auf nen ftp server hochgeladen werden. Das funktioniert soweit ganz gut. Allerdings bricht er beim hochladen nach einiger Zeit ab mit der Fehlermeldung:

Zitat:

Socket Error # 10054 Connection Reset by peer
Der Fehler tritt immer dann auf wenn gerade eine Datei in Originalgroesse hochgeladen wird. Ausserdem ist keine Zeit erkennbar nach der getrennt wird. Einmal nach 3 Dateien oder einmal nach 20.
Es scheint ja so, dass die Verbindung aufgrund einer Timeouts oder dergleichen abgebrochen wird, nur die Frage ist natuerlich wie umgehe ich das oder wie merke ich dass die Verbindung verloren wurde und verbinde neu?

Ich benutze die Indy FTP Komponente zum hochladen.

Hier Teile meines Quellcodes:
Delphi-Quellcode:
  connect;

  if not jadd then
    myftp.MakeDir(form1.cb_directory.Text);

  myftp.ChangeDir(form1.cb_directory.Text);

  for i:=0 to jfiles.Count-1 do begin
    filename := ExtractFilename(jfiles[i]);
    destination := filename;
    ext := ExtractFileExt(destination);
    while myftp.Size('p_' + destination) > -1 do begin
      j := j + 1;
      destination := copy(destination, 0, length(destination)-length(ext))+inttostr(j)+ext;
    end;
    myftp.Put(dir + 'p_' + filename, 'p_' + destination);
    myftp.Put(dir + 'm_' + filename, 'm_' + destination);
    myftp.Put(dir + 'g_' + filename, 'g_' + destination);
  end;
  myftp.Quit;
Und dann habe ich noch eine 2 Frage: Wie kann ich dadrauf regieren wenn z.b. keine Verbindung zum Internet besteht, der Benutzername falsch war oder der Host nicht zu erreichen ist. Wie komme ich an den Fehlercode der mir sagt was passiert ist damit ich ihn selber zu einer Fehlermeldung verarbeiten kann?

Viele Gruesse und schon mal viele dank
Magier

sx2008 11. Feb 2009 02:05

Re: FTP-Error # 10054 Connection Reset by peer
 
Versuche mal den Passiv Transfer zu akivieren. (myftp.Passive := True)
Dabei werden Kommandos und Daten über den gleichen Port übertragen.
Profesionelle FTP Programme können optional in periodischen Abständen ein NOOP (No-Operation) Kommando abschicken, um zu verhindern dass der Server die Verbindung beendet (weil er "denkt" da kommt nichts mehr).

Du könntest auch einen Timer mit timeout=30000 verwenden, um alle 30s dieses myftp.NOOP aufzurufen.


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