C ++ библиотека для работы с несколькими HTTP-соединениями - PullRequest
3 голосов
/ 12 марта 2011

Я ищу библиотеку для работы с несколькими одновременными HTTP-соединениями (предпочтительно в одном потоке) для использования в C ++ в Windows, чтобы она могла быть основана на Win32 API.Это для клиентского приложения, которое должно обрабатывать список запросов, но продолжать работать до тех пор, пока список не будет заполнен.

До сих пор я пробовал cURL (мультиинтерфейс), который представляется наиболее подходящимчто я нашел, но моя проблема в том, что у меня может быть очередь из 200 запросов, но мне нужно выполнять только 4 из них за раз.Это становится проблематичным, когда один запрос может занять 2 секунды, а другой - 2 минуты, так как вам приходится ждать на всех дескрипторах и получать результаты всех запросов в одном блоке.Если кто-нибудь знает способ обойти это, это было бы очень полезно.

Я также попытался развернуть свой собственный, используя WinHTTP, но мне нужно регулировать запросы, чтобы в идеале они были в одном потоке и использовали обратные вызовы дляданные, которые WinHTTP не делает.

Лучшее, что я нашел, чтобы решить все мои проблемы, это ASIHTTPRequest, но, к сожалению, это только Mac OSX.

Спасибо, J

Ответы [ 4 ]

4 голосов
/ 12 марта 2011

Вы смотрели на boost.asio?http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio.html

Он предназначен для хорошего масштабирования и имеет примеры http-сервера: http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio/examples.html

3 голосов
/ 12 марта 2011

Вы пробовали Boost Asio?Это многоплатформенность и звездная производительность, а также с хорошими примерами HTTP.

http://www.boost.org/doc/libs/1_46_1/doc/html/boost_asio.html

0 голосов
/ 13 марта 2011

Многофункциональный интерфейс libcurl поддерживает именно то, что вы просите.

0 голосов
/ 12 марта 2011

Asio - отличная библиотека, но она универсальная, примеры HTTP таковы: примеры, нет поддержки перенаправления, аутентификации и т. Д.
Я знаю о двух библиотеках, построенных поверх Boost & Asio, которые поддерживают протокол HTTP: cpp-netlib и Pion Network Library , но AFAIK также не поддерживает напрямую то, что вы хотите.
При этом, если вам удобно использовать libcurl, довольно просто использовать «легкий» интерфейс с обратными вызовами и самостоятельно создавать очередь запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...