Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многопотоковое скачивание файлов с сервера, с быстрой отработкой ошибок. VC2008, C++ 
:(
    Опции темы
Alexk553
Дата 25.11.2009, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 8.11.2009

Репутация: нет
Всего: нет



Добрый день!
Есть такая задача: имеется огромный (порядка миллиарда) список урлов, из которых 99.9% битые (нет такого урла на сервере). Нужно в несколько десятков соединений (для быстродействия) просканировать урлы на предмет - битый, или не битый, и, если не битый, то скачать этот урл на диск. Какие посоветуете использовать методы? тут задача оптимизации скорости проверки урлов на не очень широком канале. Ну и желательно, чтобы число полуоткрытых сессий TCP не превышало разумного предела, в, скажем, 100 соединений.

использовать wininet, или же через сокеты? Чем лучше реализовать многопоточность?
на С++ и MS VS 2008.
PM MAIL   Вверх
Alca
Дата 25.11.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 1
Всего: 50



Цитата

на не очень широком канале

Цитата

использовать wininet, или же через сокеты? Чем лучше реализовать многопоточность?

По-моему так все равно.



--------------------
PM WWW ICQ Skype Jabber   Вверх
InvalidProperty
Дата 25.11.2009, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 356
Регистрация: 31.10.2007
Где: Россия, Казань

Репутация: нет
Всего: 9



жесть какая.

Для простоты можно использовать библиотеку curl. Ну а если делать по трушному, то на сокетах, конечно. Многопоточность лучше всего реализовывать потоками, конечно. Опять же для простоты, можно использовать библиотеку boost, ну а вообще можно и CreateThread, _beginthread и потоки posix использовать.


--------------------
dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null
dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null
echo $0 >> $0
PM MAIL ICQ Jabber   Вверх
Alexk553
Дата 25.11.2009, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 8.11.2009

Репутация: нет
Всего: нет



Спсибро
Да, хотелось бы по-трушному. Значит, сокетами. 
Насчёт многопоточности, как это в настоящее время(2009) лучше делать? (Везде пишут, что MFC устарел, и.т.п. (CWinThread))
PM MAIL   Вверх
Alca
Дата 25.11.2009, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 1
Всего: 50



MFC юзает WinAPI, т.е. CreateThread

Это сообщение отредактировал(а) Alca - 25.11.2009, 12:01


--------------------
PM WWW ICQ Skype Jabber   Вверх
InvalidProperty
Дата 25.11.2009, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 356
Регистрация: 31.10.2007
Где: Россия, Казань

Репутация: нет
Всего: 9



Alexk553, ага, хочешь совсем по трушному - winapi. Чтоб ты ни писал - в конечном итоге это будет winapi (для винды, ессесно).


--------------------
dd if=$0 of=$0 bs=1 count=76 seek=`du -b $0 | awk {'print $1'}` 2>/dev/null
dd if=$0 of=$0 bs=1 count=67 conv=notrunc oflag=append 2>/dev/null
echo $0 >> $0
PM MAIL ICQ Jabber   Вверх
Alexk553
Дата 25.11.2009, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 8.11.2009

Репутация: нет
Всего: нет



Ага, иными словами использовать CWinThread не есть устаревший вариант?

насчёт POSIX поискал, пишут (http://forums.devx.com/showthread.php?t=168766), что под Windows реализация медленная, так что , по-видимому WINAPI оптимально. 

Что ж, начну работу над своим проектом (для себя пишу), если будут проблемы, буду тут отписываться, всем большое спасибо за напутствия, если будут ещё мысли, буду очень рад!
PM MAIL   Вверх
Alca
Дата 25.11.2009, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 1
Всего: 50



Цитата

по-видимому WINAPI оптимально. 

Тогда юзай не CreateThread, а _beginthreadex (врапер над CreateThread)


--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0550 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.