如何不在curl_easy_perform()上重用现有连接,挂起互联网连接更改

时间:2017-01-01 21:55:30

标签: c++ libcurl

详细说明,我注意到输出:

在首次运行结束时:

* Connection #0 to host www.example.com left intact

第二轮开始时:

* Found bundle for host www.example.com: 0x24e3360 [can pipeline]
* Re-using existing connection! (#0) with host www.example.com

我想要一种方法 重新使用现有连接,或者在使用现有连接之前进行验证。

其他详细信息:

我正在使用libCurl“easy”界面执行一些简单的网页下载。我有一个类inits并在其构造函数中设置了一些选项。在perform方法中,我添加了url选项,然后执行curl_easy_perform(...)。

尝试使用我的班级进行操作,我注意到了:

  • 如果第一个操作处于脱机状态,则下一个操作就像离线一样(即使在线时)
  • 如果第一个操作在线,然后关闭了互联网连接,则在下一个操作中,curl_easy_perform(...)会挂起并且永远不会返回。

我希望基于当前的互联网连接提供更合适的行为和操作。 (我已尝试在执行方法中进行清理和重新初始化+选项设置,这有效,但这看起来有点浪费。)

1 个答案:

答案 0 :(得分:2)

我去了:

curl_easy_setopt(myEasy_handle, CURLOPT_FORBID_REUSE, 1);

我在班级的构造函数中添加了一次设置。这可能会减慢操作速度,但它似乎可以完成工作,并且可能比清理和重新安装更快,或者使用另一个单独的连接到某个服务器进行互联网连接检查。

我使用它,因为它似乎比我的程序的其他选项更合适。我为此查看了两个有用的链接:link1link2

修改

我还添加了选项CURLOPT_TIMEOUT来设置硬限制,在停止之前等待多长时间 - 如果 - 在easy_perform期间,互联网连接中断。