1) Правильно ли я понимаю, что с помощью TidFTP — таки можно реализовать "докачку" файла после неожиданного разрыва связи,
послав при помощи TidFTP::Site() команду REST и следом вызвав метод TidFTP::Get()?
теперь, если ответ положительный:
2) вот синтаксис команды REST
REST <SP> <marker> <CRLF>
видно голова моя не туда вставлена, но по прочтении RFC я так и не понял, каково должно быть значение этого маркера: размер файла? какой-то адрес чего-то? хитрый символ? или вообще нановзиабаф?
или может я вообще не в том месте копаю и "докачка" реализуется как-то не так?
ЗЫ TNMFT не устраивает потому что он работает как часы только на ФТП у которых вендор MS Windows. Я собственно им и воспользовался, но когда дело дошло до полевых испытаний, выяснилось, что ФТП, на который прога должна лазить поднят под толи Линухом, толи Юниксом. И вот итог — TNMFTP во-первых забирает файлы не целиком, а во вторых не может воспользоваться методом TNMFTP::DownloadRestore(), этот метод сразу после вызова роняет исключение, в котором говорится, что у команды REST не верный параметр
Здравствуйте, DeusIrae, Вы писали:
DI>1) Правильно ли я понимаю, что с помощью TidFTP — таки можно реализовать "докачку" файла после неожиданного разрыва связи,
DI>послав при помощи TidFTP::Site() команду REST и следом вызвав метод TidFTP::Get()?
Можно.
TIdFTP.Get(const ASourceFile: string; ADest: TStream; AResume: Boolean = false);
TIdFTP.Get(const ASourceFile, ADestFile: string; const ACanOverwrite: boolean = false; AResume: Boolean = false);
AResume := True — "докачать файл"
А вот синтаксис REST:
REST position
Sets the point at which a file transfer should start; useful for resuming interrupted transfers. For nonstructured files, this is simply a decimal number. This command must immediately precede a data transfer command (RETR or STOR only); i.e. it must come after any PORT or PASV command.
Здравствуйте, KRT, Вы писали:
KRT>Здравствуйте, DeusIrae, Вы писали:
DI>>1) Правильно ли я понимаю, что с помощью TidFTP — таки можно реализовать "докачку" файла после неожиданного разрыва связи,
DI>>послав при помощи TidFTP::Site() команду REST и следом вызвав метод TidFTP::Get()?
KRT>Можно.
KRT>KRT>TIdFTP.Get(const ASourceFile: string; ADest: TStream; AResume: Boolean = false);
KRT>TIdFTP.Get(const ASourceFile, ADestFile: string; const ACanOverwrite: boolean = false; AResume: Boolean = false);
KRT>
KRT>AResume := True — "докачать файл"
нет такого метода в TIdFTP. Я забыл сказать, что разрабатываю в Билдере, у нас с тобой видать версии компоненты разные...
KRT>А вот синтаксис REST:
KRT>REST position
KRT>Sets the point at which a file transfer should start; useful for resuming interrupted transfers. For nonstructured files, this is simply a decimal number. This command must immediately precede a data transfer command (RETR or STOR only); i.e. it must come after any PORT or PASV command.
А вот за это большой спасибо