【发布时间】:2017-01-24 16:05:15
【问题描述】:
我在我的程序中使用了一些自动更新功能。如果连接失败,我希望程序继续尝试最多 15 秒,然后宣布失败。为了实现这一点,我使用以下curl_easy_setopt 进行 cURL 简单选项:
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 15);
但后来我发现,如果下载时间超过 15 秒,就会宣布超时错误。
如何将 15 秒限制在失败的情况下?即,如果 15 秒没有连接?
更多信息
我使用的完整选项列表如下:
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); //verify ssl peer
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); //verify ssl hostname
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CurlWrite_CallbackFunc_StdString);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &s);
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, FALSE);
curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, this); //pointer to the current class as it's a GUI program
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, CurlProgress_CallbackFunc_UpdateProgress);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 20);
开始的调用是通过以下方式完成的:
CURLcode res = curl_easy_perform(curl);
如果您需要更多信息,请告诉我。
谢谢。
【问题讨论】:
-
@Eichhörnchen 试过了......它不这样做......这显然只用于初始连接。需要明确的是,我在物理上断开了我的互联网连接,看看是否有影响。
-
@Eichhörnchen 这行得通!谢谢!
标签: c++ timeout runtime-error libcurl