Как многопоточно скачать файл из Инета
От: Tishaishy  
Дата: 12.05.04 21:36
Оценка:
Как многопоточно скачать файл из Инета , а то я использую InternetReadFile,InternetSetFilePointer и не хочет, и сервер поддерживает всё что надо .
Если с компа качать то CreateFile , FileSeek использую и всё ок , а с инетом не знаю как .
Подскажите какие функции использовать ?
Re: Как многопоточно скачать файл из Инета
От: Tishaishy  
Дата: 13.05.04 11:45
Оценка:
Пожалуйста , может кто знает , подскажите .
Re: Как многопоточно скачать файл из Инета
От: Lopcom  
Дата: 13.05.04 20:54
Оценка:
T>а то я использую InternetReadFile,InternetSetFilePointer и не хочет,

А в чём это "не хочет" проявляется? Можно поподробнее...
Re: Как многопоточно скачать файл из Инета
От: Vamp Россия  
Дата: 14.05.04 06:23
Оценка:
Запускаешь n потоков, в каждом потоке открываешь соединение к серверу и качаешь с соответствующего места по соответствующее.
Да здравствует мыло душистое и веревка пушистая.
Re: Как многопоточно скачать файл из Инета
От: Denis Россия http://blogs.gotdotnet.ru/personal/Denis
Дата: 14.05.04 08:02
Оценка:
и снова привет!
я пользовался библиотекой WinHTTP. Соответственно в хедере запроса можно установить переменную Range в нужный кусок:
std::wstring sRangeHeader = L"Range: bytes=100-199"; // скачаем с 100 по 199 байты


задаётся хедер с помощью
WinHttpAddRequestHeaders(m_hRequest, sRangeHeader, wcslen(sRangeHeader), WINHTTP_ADDREQ_FLAG_ADD);


ну и несколько потоков.(опять же если сервак поддерживает)
... << RSDN@Home 1.1.3 stable >>
Re[2]: Как многопоточно скачать файл из Инета
От: Tishaishy  
Дата: 20.05.04 23:52
Оценка:
Здравствуйте, Denis, Вы писали:

D>и снова привет!

D>я пользовался библиотекой WinHTTP. Соответственно в хедере запроса можно установить переменную Range в нужный кусок:
D>
D>std::wstring sRangeHeader = L"Range: bytes=100-199"; // скачаем с 100 по 199 байты
D>


D>задаётся хедер с помощью

D>
D>WinHttpAddRequestHeaders(m_hRequest, sRangeHeader, wcslen(sRangeHeader), WINHTTP_ADDREQ_FLAG_ADD);
D>


D>ну и несколько потоков.(опять же если сервак поддерживает)



Вопрос , где взять библиотеку WinHTTP, чтобы в Делфи всё работало , т.е. нужна библиотека *.tlb , *dll, *.old , *ocx , *.exe

или объясните , потому что я не сильно понимаю

p.s. Я импортировал библиотеку Micrisift WinHTTP Servise 5.1 , а там нету WinHttpAddRequestHeaders
Re: Как многопоточно скачать файл из Инета
От: Ahven  
Дата: 21.05.04 09:39
Оценка:
Здравствуйте, Tishaishy, Вы писали:

T>Как многопоточно скачать файл из Инета , а то я использую InternetReadFile,InternetSetFilePointer и не хочет, и сервер поддерживает всё что надо .

T>Если с компа качать то CreateFile , FileSeek использую и всё ок , а с инетом не знаю как .
T>Подскажите какие функции использовать ?

А можно вопрос — зачем? Лично мне сомнительно, чтобы это дало ощутимые выгоды.Мне кажется, многопоточную закачку надо делать как раз когда закачивается несколько файлов — а если один, то к чему? Пропускная способность канала от этого не вырастет, а в итоге, скорее, системой будет тратиться допольнительное время на переключение между потоками.

Может быть, я и не прав, но объясните тогда, где вы планируете выгоду получить по сравнению с однопоточной закачкой?
Re[2]: Как многопоточно скачать файл из Инета
От: Аноним  
Дата: 21.05.04 09:51
Оценка:
A>Может быть, я и не прав, но объясните тогда, где вы планируете выгоду получить по сравнению с однопоточной закачкой?

мой маленький опыт говорит, что при скачке файлов через LAN используя несколько потоков реально дойти до предела возможностей самой сети. Оптимум там где то есть.
А при скачке через интернет используя прокси, оптимум был равен одному потоку. Почему? Незнаю.
Re[2]: Как многопоточно скачать файл из Инета
От: igdrasil  
Дата: 21.05.04 09:55
Оценка:
Здравствуйте, Ahven, Вы писали:

A>А можно вопрос — зачем? Лично мне сомнительно, чтобы это дало ощутимые выгоды.


A>Может быть, я и не прав, но объясните тогда, где вы планируете выгоду получить по сравнению с однопоточной закачкой?


Пример из жизни:
У меня районная локалка, залинкованная с несколькими другими, такими же. Пиринговая политика руководства сеток такова, что между сетками ограничение на скорость перекачки 20 кбайт/сек на поток ( хотя на несколько — 100 кбайт). Дело в том, что трафик идет через инет, но для нас он бесплатен. Так вот, при таких ограничениях, накладные расходы на поддержку 5 закачек против одной несравнимы с почти пятикратным увеличением скорости.
Еще, некоторые серверы в инете специально ограничивают скорость соединения, чтобы уменьшить нагрузку.
... << RSDN@Home 1.1.3 stable >>
Re[3]: Как многопоточно скачать файл из Инета
От: igdrasil  
Дата: 21.05.04 09:58
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>А при скачке через интернет используя прокси, оптимум был равен одному потоку. Почему? Незнаю.


Видимо, канал в инет достаточно узок, или прокси сильно умная — пережевывает все данные
... << RSDN@Home 1.1.3 stable >>
Re[3]: Как многопоточно скачать файл из Инета
От: Ahven  
Дата: 21.05.04 10:50
Оценка:
Здравствуйте, igdrasil, Вы писали:

I>Пример из жизни:

I>У меня районная локалка, залинкованная с несколькими другими, такими же. Пиринговая политика руководства сеток такова, что между сетками ограничение на скорость перекачки 20 кбайт/сек на поток ( хотя на несколько — 100 кбайт). Дело в том, что трафик идет через инет, но для нас он бесплатен. Так вот, при таких ограничениях, накладные расходы на поддержку 5 закачек против одной несравнимы с почти пятикратным увеличением скорости.
I>Еще, некоторые серверы в инете специально ограничивают скорость соединения, чтобы уменьшить нагрузку.

Тогда ясно, спасибо за разъяснения.
Да, в таких случаях с ограничениями многопоточная закачка, конечно, лучше.
С другой стороны, ограничения несколько странные — почему бы хозяевам сети не сделать одно ограничение 100 кБайт/сек с машины без учета кол-ва потоков? Ну тут, впрочем, я не специалист, может так оно удобней. А Вы, кстати, не знаете, почему именно такие ограничения — 20 на поток и 100 с машины? Интересно просто.
Re[4]: Как многопоточно скачать файл из Инета
От: igdrasil  
Дата: 21.05.04 13:16
Оценка:
Здравствуйте, Ahven, Вы писали:

A>Здравствуйте, igdrasil, Вы писали:


I>>Пример из жизни:

I>>У меня районная локалка, залинкованная с несколькими другими, такими же. Пиринговая политика руководства сеток такова, что между сетками ограничение на скорость перекачки 20 кбайт/сек на поток ( хотя на несколько — 100 кбайт). Дело в том, что трафик идет через инет, но для нас он бесплатен. Так вот, при таких ограничениях, накладные расходы на поддержку 5 закачек против одной несравнимы с почти пятикратным увеличением скорости.
I>>Еще, некоторые серверы в инете специально ограничивают скорость соединения, чтобы уменьшить нагрузку.

A>Тогда ясно, спасибо за разъяснения.

A>Да, в таких случаях с ограничениями многопоточная закачка, конечно, лучше.
A>С другой стороны, ограничения несколько странные — почему бы хозяевам сети не сделать одно ограничение 100 кБайт/сек с машины без учета кол-ва потоков? Ну тут, впрочем, я не специалист, может так оно удобней. А Вы, кстати, не знаете, почему именно такие ограничения — 20 на поток и 100 с машины? Интересно просто.

не знаю, тут даже не к админам нашей сетки, а к руководству объединения сетей
... << RSDN@Home 1.1.3 stable >>
Re[5]: Как многопоточно скачать файл из Инета
От: igdrasil  
Дата: 21.05.04 13:20
Оценка:
Здравствуйте, igdrasil, Вы писали:

I>Здравствуйте, Ahven, Вы писали:


A>>Здравствуйте, igdrasil, Вы писали:


I>>>Пример из жизни:

I>>>У меня районная локалка, залинкованная с несколькими другими, такими же. Пиринговая политика руководства сеток такова, что между сетками ограничение на скорость перекачки 20 кбайт/сек на поток ( хотя на несколько — 100 кбайт). Дело в том, что трафик идет через инет, но для нас он бесплатен. Так вот, при таких ограничениях, накладные расходы на поддержку 5 закачек против одной несравнимы с почти пятикратным увеличением скорости.
I>>>Еще, некоторые серверы в инете специально ограничивают скорость соединения, чтобы уменьшить нагрузку.

A>>Тогда ясно, спасибо за разъяснения.

A>>Да, в таких случаях с ограничениями многопоточная закачка, конечно, лучше.
A>>С другой стороны, ограничения несколько странные — почему бы хозяевам сети не сделать одно ограничение 100 кБайт/сек с машины без учета кол-ва потоков? Ну тут, впрочем, я не специалист, может так оно удобней. А Вы, кстати, не знаете, почему именно такие ограничения — 20 на поток и 100 с машины? Интересно просто.

I>не знаю, тут даже не к админам нашей сетки, а к руководству объединения сетей


хотя, можно предположить, некоторые браузеры открывают несколько соединений: 1 — сама страничка(или даже несколько, если с фреймами), остальные — картинки.
так вот, в таком случае страница будет грузиться намного быстрее
... << RSDN@Home 1.1.3 stable >>
Re[6]: Как многопоточно скачать файл из Инета
От: Ahven  
Дата: 21.05.04 16:44
Оценка:
Здравствуйте, igdrasil, Вы писали:


I>хотя, можно предположить, некоторые браузеры открывают несколько соединений: 1 — сама страничка(или даже несколько, если с фреймами), остальные — картинки.

I>так вот, в таком случае страница будет грузиться намного быстрее

Сдается мне, пропускную способность сети многопоточность не увеличивает, так что сомневаюсь, что будет намного быстрее. Впрочем, не исключаю, что так делают.
Re[3]: Как многопоточно скачать файл из Инета
От: MarW https://www.wincatalog.com
Дата: 22.05.04 08:17
Оценка:
А>мой маленький опыт говорит, что при скачке файлов через LAN используя несколько потоков реально дойти до предела возможностей самой сети. Оптимум там где то есть.
А>А при скачке через интернет используя прокси, оптимум был равен одному потоку. Почему? Незнаю.
А у меня как раз обратная картина. ReGet при скачивании через инет увеличивает скорость, по сравнению с IE, раз в 20 (то есть тянет почти все два мегабита за раз). В то время как по локалке второй поток только мешает и замедляет скорость скачивания.
WinCatalog — Disk Catalog Software for Windows
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.