多卷曲C++ 准备好时不断提供新的处理程序

Multi CURL C++ Continually supply new handlers when ready

本文关键字:程序 处理 C++ 准备好      更新时间:2023-10-16

我在C++中使用CURL Multi API。

目前,我将提供给它的处理程序数量限制为 5,因此我必须等到它们全部完成,直到我可以再提供 5 个处理程序。

我希望能够检测处理程序何时完成,处理数据,然后生成下一个处理程序以放入新空间。

是否可以在多 API 运行时将处理程序传递给它?

是否可以在多 API 运行时将处理程序传递给它?

是的。

一旦curl_multi_info_read返回带有CURLMSG_DONE标志的消息,您就可以:

  1. 通过msg->easy_handle检索相应的简易句柄
  2. 检查传输是否正常,并对响应执行您想要的操作,
  3. curl_multi_remove_handle取下这个简单的手柄

然后,您可以使用 curl_multi_add_handle 向多句柄添加另一个句柄。

大多数情况下,最好的方法是在再次添加之前对简单手柄执行curl_easy_reset

  curl_multi_remove_handle(multi_handle, easy_handle);
  curl_easy_reset(easy_handle);
  // here re-configure your handle for the next transfer (CURLOPT_URL, etc)
  // ...
  curl_multi_add_handle(multi_handle, easy_handle);