![]() |
|
Модераторы: feodorv |
![]()
|
|
| Alexk553 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 8.11.2009 Репутация: нет Всего: нет |
Добрый день!
Есть такая задача: имеется огромный (порядка миллиарда) список урлов, из которых 99.9% битые (нет такого урла на сервере). Нужно в несколько десятков соединений (для быстродействия) просканировать урлы на предмет - битый, или не битый, и, если не битый, то скачать этот урл на диск. Какие посоветуете использовать методы? тут задача оптимизации скорости проверки урлов на не очень широком канале. Ну и желательно, чтобы число полуоткрытых сессий TCP не превышало разумного предела, в, скажем, 100 соединений. использовать wininet, или же через сокеты? Чем лучше реализовать многопоточность? на С++ и MS VS 2008. |
|||
|
||||
| Alca |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
По-моему так все равно. |
||||
|
|||||
| InvalidProperty |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
| Alexk553 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 8.11.2009 Репутация: нет Всего: нет |
Спсибро
Да, хотелось бы по-трушному. Значит, сокетами. Насчёт многопоточности, как это в настоящее время(2009) лучше делать? (Везде пишут, что MFC устарел, и.т.п. (CWinThread)) |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
MFC юзает WinAPI, т.е. CreateThread
Это сообщение отредактировал(а) Alca - 25.11.2009, 12:01 |
|||
|
||||
| InvalidProperty |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
| Alexk553 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 8.11.2009 Репутация: нет Всего: нет |
Ага, иными словами использовать CWinThread не есть устаревший вариант?
насчёт POSIX поискал, пишут (http://forums.devx.com/showthread.php?t=168766), что под Windows реализация медленная, так что , по-видимому WINAPI оптимально. Что ж, начну работу над своим проектом (для себя пишу), если будут проблемы, буду тут отписываться, всем большое спасибо за напутствия, если будут ещё мысли, буду очень рад! |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 1 Всего: 50 |
Тогда юзай не CreateThread, а _beginthreadex (врапер над CreateThread) |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Сети | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |