处理多个HTTP连接的C++库

4
我正在寻找一个可以处理多个同时的HTTP连接(最好在单个线程上)的库,用于在Windows中使用C ++,以便可以基于Win32 API。这是为客户端应用程序设计的,必须处理请求列表,但始终保持4个请求运行,直到列表完成。
到目前为止,我尝试了cURL(多接口),它似乎是我找到的最合适的,但我的问题是,我可能有一个200个请求的队列,但我只需要同时运行其中的4个请求。当一个请求可能需要2秒而另一个可能需要2分钟时,这变得棘手,因为您必须等待所有句柄并一次性接收所有请求的结果。如果有人知道如何解决这个问题,那将非常有用。
我还尝试过使用WinHTTP来制作自己的工具,但我需要限制请求速率,因此最好在单个线程上进行,并使用数据回调,而WinHTTP不支持。
我找到的最好的东西是ASIHTTPRequest,但不幸的是,它仅限于MacOSX。
谢谢, J
4个回答

4

谢谢,我看了一下boost.asio,似乎会遇到与libcurl相同的问题。它能够在单个线程上保持4个请求的持续运行吗?即在一个请求完成时通知另一个请求启动,而无需等待所有请求完成吗? - JWood
@JWood,我没有做过太多的服务器编程(只是使用asio来设置与设备的单个连接)。抱歉。 - Tom
没问题,虽然我现在不是在处理服务器,而是客户端。 - JWood
@JWood:不太明白你所说的“保持4个请求恒定”的意思,但异步编程模型的整个重点在于启动异步操作并在每个操作完成时得到通知。因此,一旦一个操作完成,您就可以在处理程序中启动另一个操作,而无需等待其他未完成的异步操作完成。 - Ralf

3

0

Asio 是一个很棒的库,但它是通用的,HTTP 示例仅仅是示例,不支持重定向、身份验证等功能。
我知道两个基于 Boost & Asio 构建的支持 HTTP 协议的库:cpp-netlibPion Network Library 但据我所知,它们都不直接支持你想要的功能。
话虽如此,如果你熟悉使用 libcurl 并且能够使用回调函数和实现请求队列,那么很容易就可以使用 “easy” 接口了。


0

libcurl的多接口正好支持您所需的功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接