Download Manager Ошибка сети - PullRequest
       7

Download Manager Ошибка сети

0 голосов
/ 08 августа 2011

Я делаю утилиту загрузки в Java, которая будет загружать файлы с FTP-сервера. Я использую класс URLConnection для установления соединения и inputtream в качестве объекта потока. Проблема, с которой я сталкиваюсь, заключается в сценарии сбоя сети, т.е. при загрузке определенного файла, если подключение потеряно и после восстановления подключения я хочу, чтобы он возобновил загрузку с того места, где он был остановлен ранее.

Для этого я сделал следующее: -

/ * Здесь я пытаюсь пропустить количество загруженных байтов настолько, чтобы получить указатель в потоке, откуда он должен возобновить загрузку. Метод skip () может не обязательно пропускать количество байтов, указанное в качестве параметр и, следовательно, время цикла. * /

while(totalByteSkipped!=downloaded) 
{ 
      bytesSkipped = stream.skip(downloaded-totalByteSkipped); 

      totalByteSkipped = totalByteSkipped+bytesSkipped; 
} 

Но такой подход, при котором вручную пропускается так много байтов, очень медленный и влияет на общее время загрузки, поэтому в таком случае мне нужен механизм для получения указателя в потоке в точке, где он прекратил загрузку.

Надеясь получить альтернативный подход к тому же. Спасибо !!

Ответы [ 2 ]

0 голосов
/ 08 августа 2011

Вам необходимо реализовать FPT restart , чтобы возобновить загрузку.Если ваш сервер поддерживает его, вы можете указать это смещение в файле.

Есть ли причина, по которой вы не используете уже существующий FTP-клиент? FTP-клиент Commons Net поддерживает перезапуск.

0 голосов
/ 08 августа 2011

skip () не будет работать для вас, потому что он просто загружает все данные, а затем отбрасывает их.Сервер не проинформирован о том, что эти биты отбрасываются, они сбрасываются на клиенте.

Вы смотрите не с того конца.Проверьте, разрешает ли протокол FTP (или что вы используете) такое поведение, и какие инструкции вы должны отправить для его использования.В противном случае они будут просто отправлять вам все данные с самого начала, даже если вы этого не хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...