Я использую функцию автообновления в своей программе. В случае сбоя подключения я хотел бы, чтобы программа продолжала пробовать до 15 секунд, а затем объявляла о сбое. Для того, чтобы достичь этого, я использовал следующий curl_easy_setopt
для Curl простой вариант:сделать тайм-аут libcURL только при сбое подключения
curl_easy_setopt(curl, CURLOPT_TIMEOUT, 15);
Но потом я обнаружил, что если загрузка занимает более 15 секунд, объявляется ошибка тайм-аута.
Как я могу ограничить 15 секунд только случаем отказа? I.e., если нет связи в течение 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 Это работает! Благодаря! –