AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Probleme mit TIdTrivialFtp
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit TIdTrivialFtp

Ein Thema von easywk · begonnen am 19. Okt 2009
Antwort Antwort
easywk

Registriert seit: 9. Jul 2003
Ort: Schwanewede
117 Beiträge
 
Delphi 7 Enterprise
 
#1

Probleme mit TIdTrivialFtp

  Alt 19. Okt 2009, 12:47
Hallo zusammen,

ich habe etwas Probleme mit dem TrivialFtp von Indy. Im Prinzip möchte ich vom Client aus einfach eine Datei herunterladen. Im Client habe ich das Ganze auf einen Button gelegt, wobei FtpClient halt die TIdTrivialFTP-Komponente ist:

Delphi-Quellcode:
try
  FtpClient.Connect;
  St:=TFileStream.Create(Datapath+'daten.txt',fmCreate);
  FtpClient.Get('daten.txt',ST);
finally
  if Assigned(ST) then
    FreeAndNil(ST);
  if FtpClient.Connected then
    FtpClient.Disconnect;
end;
Im Serverprogramm gibt es ein FtpServer vom Typ TIdTrivialFtpServer mit den beiden nachfolgenden Events:
Delphi-Quellcode:
procedure TFormMain.FtpServerReadFile(Sender: TObject;
  var FileName: String; const PeerInfo: TPeerInfo;
  var GrantAccess: Boolean; var AStream: TStream;
  var FreeStreamOnComplete: Boolean);
var FS:TFileStream;
begin
  FreeStreamOnComplete:=TRUE;
  try
    // Verzeichnis umleiten auf das Datenverzeichnis, kein anderes Verzeichnis akzeptieren
    Filename:=Datapath+ExtractFilename(Filename);
    if FileExists(Filename) then
      begin
        FS:=TFileStream.Create(Filename,fmOpenRead or fmShareExclusive);
        AStream:=FS;
        GrantAccess:=TRUE;
      end
    else GrantAccess:=FALSE;
  except
    GrantAccess:=FALSE;
    if Assigned(FS) then
      FreeAndNil(FS);
  end;
end;

procedure TFormMain.FtpServerTransferComplete(Sender: TObject;
  const Success: Boolean; const PeerInfo: TPeerInfo; var AStream: TStream;
  const WriteOperation: Boolean);
begin
  try
    if Assigned(AStream) then
      FreeAndNil(AStream);
  except
  end;
end;
Das Problem: im Client komme ich aus dem Get nicht wieder und laufe dann auf ein Timeout. Das Connect geht problemlos klar.

Ich habe dann auf der Serverseite den Debugger laufen lassen. Die Dateianfrage kommt dort an, die Datei wird gefunden und die vom Stream angegebene Dateigröße stimmt mit 30417 Byte auch. Auch das TransferComplete-Event auf der Serverseite wird aufgerufen. Daher gehe ich davon aus, dass auf dem Server alles glatt geht - nur im Client kommt halt nichts an.

Hat jemand eine Idee, wo ich noch suchen kann oder was ich falsch mache?

Gruß
easy
Björn
if all else fails - read the instructions
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:19 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