@Sakura Erst einmal Hallo. Bei einer "Passive = False" Verbindung ist es nicht ganz richtig, daß die Verbindung durch den Client gestartet wird. Sie wird duch den Client initiert. Der FtpClient wird dann faktisch zu einem trivalen Server.
Delphi-Quellcode:
// Auszug aus: procedure TIdFTP.InternalGet(const ACommand: string; ADest: TStream; AResume: Boolean = false);
if FPassive
then begin
...
end else begin
FDataChannel := TIdSimpleServer.Create(
nil);
try
with TIdSimpleServer(FDataChannel)
do begin
InitDataChannel;
BoundIP := (Self.IOHandler
as TIdIOHandlerSocket).Binding.IP;
BeginListen;
SendPort(Binding);
if AResume
then begin
Self.SendCmd('
REST ' + IntToStr(ADest.Position), [350]);
{Do not translate}
end;
Self.SendCmd(ACommand, [125, 150, 154]);
//APR: Ericsson Switch FTP
Listen;
ReadStream(ADest, -1, True);
end;
finally
FreeAndNil(FDataChannel);
end;
end;
Da ich aber nicht weiß, wozu daß Ganze gut ist, war es ja einen Versuch wert.
bye
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----