Предположим, что я хочу передать просто часть файла по FTP - это возможное использование стандартного протокола FTP?
В HTTP я мог использовать заголовок Диапазона в запросе для определения диапазона данных удаленного ресурса. Если это - файл 1 МБ, я мог бы попросить байты от 600k до 700k.
Есть ли что-нибудь как этот в FTP? Я читаю RFC FTP, ничего не смотрите, но хотите удостовериться, что я ничего не пропускаю.
Существует команда Restart в FTP - который работал бы?
Приложение
После получения ответа Brian Bondy ниже, я записал Потоковый класс только для чтения, который переносит FTP. Это поддерживает, Ищут () и Read () операции на ресурсе, который читается через FTP, на основе REST
глагол.
Найдите его по http://cheeso.members.winisp.net/srcview.aspx?dir=streams&file=FtpReadStream.cs
Это довольно не спешит Искать (), потому что установка сокета данных занимает много времени. Лучшие результаты прибывают при обертывании того потока в BufferedStream.
Да, вы можете использовать команду REST
.
REST
устанавливает точку, с которой должна начаться последующая передача файла. Обычно он используется для перезапуска прерванных передач. Команда должна идти прямо перед RETR
или STOR
и, следовательно, после PORT
или PASV
.
Из RFC 959 FTP:
RESTART (REST) Поле аргумента представляет маркер сервера, с которого должна быть перезапущена передача файлов . Эта команда не вызывает передачу файла , но пропускает файл до указанной контрольной точки данных. За этой командой немедленно должна следовать соответствующая служебная команда FTP , которая должна вызвать возобновление передачи файла .
Подробнее: http://www.faqs.org/rfcs/rfc959.html#ixzz0jZp8azux
Вы должны проверить, как GridFTP выполняет параллельные передачи. При этом используются те техники, которые вам нужны (и на самом деле это может быть код, который лучше заимствовать, а не реализовывать с нуля самостоятельно).