如何不使用curl_easy_perform()上的现有连接,挂在Internet连接上
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"界面执行一些简单的网页下载。我有一个课程,可以在其构造函数中设置一些选项。在执行方法中,我添加了URL选项,然后进行curl_easy_perform(...)。
尝试使用我的班级进行操作,我注意到:
- 如果第一次操作是离线的,那么下一个操作就像离线一样(即使在线时)
- 如果第一次操作在线,然后在下一个操作中关闭了Internet连接,则curl_easy_perform(...)悬挂而永不返回。
我希望基于当前的Internet连接更合适的行为和操作。(我尝试在表演方法中清理和重新定位 选项设置,但这似乎有些浪费。)
我去了:
curl_easy_setopt(myEasy_handle, CURLOPT_FORBID_REUSE, 1);
我在班级的构造函数中添加了一次设置。这可能会减慢操作的速度,但是它似乎比清理和重新定位更快,并且使用与某些服务器进行Internet连接检查的另一个单独的连接。
。我使用了它,因为它似乎比我程序的其他选项更合适。我查看的两个有用的链接如下:link1,link2。
编辑:
我还添加了选项 CURLOPT_TIMEOUT
,以设置一个硬性限制,以便在easy_perform中停止多长时间,互联网连接下降。
相关文章:
- 当套接字连接断开时检测C/C++Unix
- 无法在windows上使用mingw将sqlite3与c连接
- 到连接组件算法的问题(递归)
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 无法在C++中建立与MySQL数据库的连接
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 使用 bfs 解决连接组件问题时得到错误的答案
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- C 在Linux Ubuntu上检查Internet连接
- 为什么要在不同的连接(新的InternetOpen和New Internet Connect)上对HttpsendReq
- 如何不使用curl_easy_perform()上的现有连接,挂在Internet连接上
- 控制Internet连接
- 管理2个Internet连接
- 防止不需要Internet连接的桌面应用程序的盗版
- 在C++中检查Internet连接
- 使用internetcheckconnection在c++中检查Internet连接
- internet explorer语言 - 连接到正在运行的IE实例c++