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

How not to re-use existing connection on curl_easy_perform(), hangs on internet connection change

详细,我注意到输出:

第一个运行结束时:

* 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' 接口执行一些简单的网页下载。我有一个 class 可以在它的构造函数中初始化和设置一些选项。在执行方法中,我添加了 url 选项,然后执行 curl_easy_perform(...)。

尝试使用我的 class 进行操作,我注意到:

我想要基于当前互联网连接的更合适的行为和操作。 (我试过clean up and re-init + perform 方法中的option setting,效果不错,但是好像有点浪费。)

我选择了:

curl_easy_setopt(myEasy_handle, CURLOPT_FORBID_REUSE, 1);

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

我使用它是因为它看起来比我程序的其他选项更合适。我为此查看的两个有用 link 如下:link1, link2.

编辑:

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