Сталкнулся с такой проблемой при реализации многопоточного скачивания файла по HTTP. Создаю несколько потоков. Каждый будет скачивать свою часть файла. В каждом потокое создаю соединение с сервером и отправляю запрос. Для каждого запроса устанавливаю загодовок Range: bytes=0-1000, Range: bytes=1001-2000 ... Далее каждый поток получает данный и записывает их в файл на соответствующее место.
При загрузки файлов с локального сервера всё работает нормально. Но как только я пытаюсь скачать например http://yandex.ru/index.html происходит херня. В ответ на запрос с заголовком Range: bytes=1001-2000 приходи самое начало файла, то есть тоже, что и на запрос с Range: bytes=0-1000.
Может просто Яндекс специально не поддерживает заголовок Range? Или я что-то не так делаю?
Здравствуйте, __al, Вы писали:
__>При загрузки файлов с локального сервера всё работает нормально. Но как только я пытаюсь скачать например http://yandex.ru/index.html происходит херня. В ответ на запрос с заголовком Range: bytes=1001-2000 приходи самое начало файла, то есть тоже, что и на запрос с Range: bytes=0-1000. __>Может просто Яндекс специально не поддерживает заголовок Range? Или я что-то не так делаю?
Естественно, не поддерживает — в заголовках ответов Yandex'а нет поля "Accept-Ranges: bytes". Было бы вообще удивительно, если бы он поддерживал.
Здравствуйте, Cyberax, Вы писали:
C>Естественно, не поддерживает — в заголовках ответов Yandex'а нет поля "Accept-Ranges: bytes". Было бы вообще удивительно, если бы он поддерживал.
Кроме того, сервер может вернуть не совсем тот промежуток файла, который у него запросили. Так что надо обрабатывать заголовки ответа.
Здравствуйте, adontz, Вы писали:
A>Кроме того, сервер может вернуть не совсем тот промежуток файла, который у него запросили. Так что надо обрабатывать заголовки ответа.
А можно поподробней? И какие заголовки надо обрабатывать?
"__al" <74778@users.rsdn.ru> wrote in message news:2945687@news.rsdn.ru... > A>Кроме того, сервер может вернуть не совсем тот промежуток файла, который у него запросили. Так что надо обрабатывать заголовки ответа. > А можно поподробней? И какие заголовки надо обрабатывать?
Смотри ответ сервера. 200 OK — хрен тебе, получай файл сначала. 206 Partial content — повезло, это часть файла.
"wellwell" <41011@users.rsdn.ru> wrote in message news:2945715@news.rsdn.ru... >> А можно поподробней? И какие заголовки надо обрабатывать? > Смотри ответ сервера. 200 OK — хрен тебе, получай файл сначала. 206 Partial content — повезло, это часть файла.
Ну и разумеется Content-Range заголовок ответа надо проверять.
Здравствуйте, wellwell, Вы писали:
W>"wellwell" <41011@users.rsdn.ru> wrote in message news:2945715@news.rsdn.ru... >>> А можно поподробней? И какие заголовки надо обрабатывать? >> Смотри ответ сервера. 200 OK — хрен тебе, получай файл сначала. 206 Partial content — повезло, это часть файла.
W>Ну и разумеется Content-Range заголовок ответа надо проверять.