Как многопоточно скачать файл из Инета , а то я использую InternetReadFile,InternetSetFilePointer и не хочет, и сервер поддерживает всё что надо .
Если с компа качать то CreateFile , FileSeek использую и всё ок , а с инетом не знаю как .
Подскажите какие функции использовать ?
Здравствуйте, Denis, Вы писали:
D>и снова привет! D>я пользовался библиотекой WinHTTP. Соответственно в хедере запроса можно установить переменную Range в нужный кусок: D>
D>std::wstring sRangeHeader = L"Range: bytes=100-199"; // скачаем с 100 по 199 байты
D>
Здравствуйте, Tishaishy, Вы писали:
T>Как многопоточно скачать файл из Инета , а то я использую InternetReadFile,InternetSetFilePointer и не хочет, и сервер поддерживает всё что надо . T>Если с компа качать то CreateFile , FileSeek использую и всё ок , а с инетом не знаю как . T>Подскажите какие функции использовать ?
А можно вопрос — зачем? Лично мне сомнительно, чтобы это дало ощутимые выгоды.Мне кажется, многопоточную закачку надо делать как раз когда закачивается несколько файлов — а если один, то к чему? Пропускная способность канала от этого не вырастет, а в итоге, скорее, системой будет тратиться допольнительное время на переключение между потоками.
Может быть, я и не прав, но объясните тогда, где вы планируете выгоду получить по сравнению с однопоточной закачкой?
Re[2]: Как многопоточно скачать файл из Инета
От:
Аноним
Дата:
21.05.04 09:51
Оценка:
A>Может быть, я и не прав, но объясните тогда, где вы планируете выгоду получить по сравнению с однопоточной закачкой?
мой маленький опыт говорит, что при скачке файлов через LAN используя несколько потоков реально дойти до предела возможностей самой сети. Оптимум там где то есть.
А при скачке через интернет используя прокси, оптимум был равен одному потоку. Почему? Незнаю.
Здравствуйте, Ahven, Вы писали:
A>А можно вопрос — зачем? Лично мне сомнительно, чтобы это дало ощутимые выгоды.
A>Может быть, я и не прав, но объясните тогда, где вы планируете выгоду получить по сравнению с однопоточной закачкой?
Пример из жизни:
У меня районная локалка, залинкованная с несколькими другими, такими же. Пиринговая политика руководства сеток такова, что между сетками ограничение на скорость перекачки 20 кбайт/сек на поток ( хотя на несколько — 100 кбайт). Дело в том, что трафик идет через инет, но для нас он бесплатен. Так вот, при таких ограничениях, накладные расходы на поддержку 5 закачек против одной несравнимы с почти пятикратным увеличением скорости.
Еще, некоторые серверы в инете специально ограничивают скорость соединения, чтобы уменьшить нагрузку.
Здравствуйте, igdrasil, Вы писали:
I>Пример из жизни: I>У меня районная локалка, залинкованная с несколькими другими, такими же. Пиринговая политика руководства сеток такова, что между сетками ограничение на скорость перекачки 20 кбайт/сек на поток ( хотя на несколько — 100 кбайт). Дело в том, что трафик идет через инет, но для нас он бесплатен. Так вот, при таких ограничениях, накладные расходы на поддержку 5 закачек против одной несравнимы с почти пятикратным увеличением скорости. I>Еще, некоторые серверы в инете специально ограничивают скорость соединения, чтобы уменьшить нагрузку.
Тогда ясно, спасибо за разъяснения.
Да, в таких случаях с ограничениями многопоточная закачка, конечно, лучше.
С другой стороны, ограничения несколько странные — почему бы хозяевам сети не сделать одно ограничение 100 кБайт/сек с машины без учета кол-ва потоков? Ну тут, впрочем, я не специалист, может так оно удобней. А Вы, кстати, не знаете, почему именно такие ограничения — 20 на поток и 100 с машины? Интересно просто.
Здравствуйте, Ahven, Вы писали:
A>Здравствуйте, igdrasil, Вы писали:
I>>Пример из жизни: I>>У меня районная локалка, залинкованная с несколькими другими, такими же. Пиринговая политика руководства сеток такова, что между сетками ограничение на скорость перекачки 20 кбайт/сек на поток ( хотя на несколько — 100 кбайт). Дело в том, что трафик идет через инет, но для нас он бесплатен. Так вот, при таких ограничениях, накладные расходы на поддержку 5 закачек против одной несравнимы с почти пятикратным увеличением скорости. I>>Еще, некоторые серверы в инете специально ограничивают скорость соединения, чтобы уменьшить нагрузку.
A>Тогда ясно, спасибо за разъяснения. A>Да, в таких случаях с ограничениями многопоточная закачка, конечно, лучше. A>С другой стороны, ограничения несколько странные — почему бы хозяевам сети не сделать одно ограничение 100 кБайт/сек с машины без учета кол-ва потоков? Ну тут, впрочем, я не специалист, может так оно удобней. А Вы, кстати, не знаете, почему именно такие ограничения — 20 на поток и 100 с машины? Интересно просто.
не знаю, тут даже не к админам нашей сетки, а к руководству объединения сетей
Здравствуйте, igdrasil, Вы писали:
I>Здравствуйте, Ahven, Вы писали:
A>>Здравствуйте, igdrasil, Вы писали:
I>>>Пример из жизни: I>>>У меня районная локалка, залинкованная с несколькими другими, такими же. Пиринговая политика руководства сеток такова, что между сетками ограничение на скорость перекачки 20 кбайт/сек на поток ( хотя на несколько — 100 кбайт). Дело в том, что трафик идет через инет, но для нас он бесплатен. Так вот, при таких ограничениях, накладные расходы на поддержку 5 закачек против одной несравнимы с почти пятикратным увеличением скорости. I>>>Еще, некоторые серверы в инете специально ограничивают скорость соединения, чтобы уменьшить нагрузку.
A>>Тогда ясно, спасибо за разъяснения. A>>Да, в таких случаях с ограничениями многопоточная закачка, конечно, лучше. A>>С другой стороны, ограничения несколько странные — почему бы хозяевам сети не сделать одно ограничение 100 кБайт/сек с машины без учета кол-ва потоков? Ну тут, впрочем, я не специалист, может так оно удобней. А Вы, кстати, не знаете, почему именно такие ограничения — 20 на поток и 100 с машины? Интересно просто.
I>не знаю, тут даже не к админам нашей сетки, а к руководству объединения сетей
хотя, можно предположить, некоторые браузеры открывают несколько соединений: 1 — сама страничка(или даже несколько, если с фреймами), остальные — картинки.
так вот, в таком случае страница будет грузиться намного быстрее
I>хотя, можно предположить, некоторые браузеры открывают несколько соединений: 1 — сама страничка(или даже несколько, если с фреймами), остальные — картинки. I>так вот, в таком случае страница будет грузиться намного быстрее
Сдается мне, пропускную способность сети многопоточность не увеличивает, так что сомневаюсь, что будет намного быстрее. Впрочем, не исключаю, что так делают.
А>мой маленький опыт говорит, что при скачке файлов через LAN используя несколько потоков реально дойти до предела возможностей самой сети. Оптимум там где то есть. А>А при скачке через интернет используя прокси, оптимум был равен одному потоку. Почему? Незнаю.
А у меня как раз обратная картина. ReGet при скачивании через инет увеличивает скорость, по сравнению с IE, раз в 20 (то есть тянет почти все два мегабита за раз). В то время как по локалке второй поток только мешает и замедляет скорость скачивания.