TidFTP + (RFC959 и команда REST)
От: DeusIrae  
Дата: 07.10.05 09:15
Оценка:
1) Правильно ли я понимаю, что с помощью TidFTP — таки можно реализовать "докачку" файла после неожиданного разрыва связи,
послав при помощи TidFTP::Site() команду REST и следом вызвав метод TidFTP::Get()?

теперь, если ответ положительный:

2) вот синтаксис команды REST
REST <SP> <marker> <CRLF>

видно голова моя не туда вставлена, но по прочтении RFC я так и не понял, каково должно быть значение этого маркера: размер файла? какой-то адрес чего-то? хитрый символ? или вообще нановзиабаф?

или может я вообще не в том месте копаю и "докачка" реализуется как-то не так?

ЗЫ TNMFT не устраивает потому что он работает как часы только на ФТП у которых вендор MS Windows. Я собственно им и воспользовался, но когда дело дошло до полевых испытаний, выяснилось, что ФТП, на который прога должна лазить поднят под толи Линухом, толи Юниксом. И вот итог — TNMFTP во-первых забирает файлы не целиком, а во вторых не может воспользоваться методом TNMFTP::DownloadRestore(), этот метод сразу после вызова роняет исключение, в котором говорится, что у команды REST не верный параметр
Re: TidFTP + (RFC959 и команда REST)
От: KRT Украина  
Дата: 11.10.05 11:03
Оценка:
Здравствуйте, 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.
Re[2]: TidFTP + (RFC959 и команда REST)
От: DeusIrae  
Дата: 12.10.05 04:58
Оценка:
Здравствуйте, 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.
А вот за это большой спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.