2011-03-12 104 views
3

我正在尋找一個庫來處理在Windows中使用C++的多個同時HTTP連接(在單個線程上的情況),因此它可以是基於Win32 API的。這是一個客戶端應用程序,它必須處理請求列表,但始終保持4次運行,直到列表完成。用於處理多個HTTP連接的C++庫

到目前爲止,我已經嘗試cURL(多接口),這似乎是我找到的最合適的,但我的問題是,我可能有200個請求的隊列,但我只需要在其中運行4個時間。當一個請求可能需要2秒鐘,另一個請求可能需要2分鐘時,這會變得有問題,因爲您必須等待所有句柄並在一個塊中接收所有請求的結果。如果有人知道這個方法,這將是非常有用的。

我也嘗試使用WinHTTP自己滾動,但我需要限制請求,所以它們理想情況下需要位於單個線程上,並使用WinHTTP不執行的數據回調。

我發現最好的東西可以解決我所有的問題是ASIHTTPRequest,但不幸的是它只是Mac OSX。

感謝, Ĵ

回答

4

你有沒有看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

+0

謝謝,我看着boost.asio,好像我遇到了與libcurl相同的問題。它是否能夠在單個線程上保持不變的4個請求?即在一個人完成了另一個人而不需要等待所有請求完成時被通知? – JWood 2011-03-12 16:32:20

+0

@JWood,沒有做太多的服務器編程(只是使用asio與設備建立單一連接)對不起。 – Tom 2011-03-12 16:47:06

+0

沒問題,雖然它不是我正在工作的服務器,但它是一個客戶端。 – JWood 2011-03-12 17:09:16

0

短耳是一個偉大的圖書館,但它是通用的,在HTTP的例子僅僅是:例子,有重定向,認證等的支持。
我知道建立在Boost &上的兩個庫Asio支持HTTP協議:cpp-netlibPion Network Library,但AFAIK既不直接支持你想要的。
如果您對使用libcurl感到滿意,那麼應該很容易使用具有回調的「簡單」接口並自己實現請求隊列。

0

libcurl的多接口支持你所要求的。