Как узнать общее время загрузки в libcurl?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как узнать общее время загрузки в libcurl?

Сообщение Anonymous »


в функции xferinfo2 ret возвращает ошибку [48]. 48 — CURLE_UNKNOWN_OPTION, /* 48 — пользователь указал неизвестную опцию */

и результат printf вернуть 48 ОБЩЕЕ ВРЕМЯ: 0,000000 ВНИЗ: 41992 из 45998104

В чем проблема с функцией Curl_easy_getinfo??

Этот параметр Curl_easy_getinfo (curl,CURLINFO_TOTAL_TIME, &curtime) отлично работает в методах POST. Однако с методом GET есть проблема.
`typedef struct myprogress { curl_off_t последнее время выполнения; /* тип зависит от версии, см. выше */ КУЛЕР *curl; }мойпрогресс;` `static size_t write_data (void *ptr, size_t size, size_t nmemb, FILE *stream) { size_t записано = fwrite (ptr, размер, nmemb, поток); возврат письменный; }` `static int xferinfo2(void *p, завиток_off_t dltotal, завиток_off_t dlnow, cur_off_t ultotal, curl_off_t ulnow) { struct myprogress *myp = (struct myprogress *)p; CURL *curl = myp->curl; двойное время куртки = 0; **int ret = curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &curtime); printf("ret %d\n", ret);** myp->lastruntime = curtime; fprintf(stderr, "ОБЩЕЕ ВРЕМЯ: %f \r\n", curtime); fprintf(stderr," DOWN: %" CURL_FORMAT_CURL_OFF_T " из %" CURL_FORMAT_CURL_OFF_T "\r\n", dlnow, dltotal); если (dlnow > STOP_DOWNLOAD_AFTER_THIS_MANY_BYTES) возврат 1; вернуть 0; }` `CURLcode curl_get(const char* Path, const char* URL) { КУЛЕР *curl; ФАЙЛ *fp; CURLcode разрешение = 0; структура программы myprogress; если (GET_CURL_Stop_Upload()) { LOGE("Остановить загрузку завитков...\n"); вернуть НЕУДАЧУ; } fp = fopen(Путь, "wb"); если(!фп) { LOGE("Ошибка публикации текстового файла\n"); /* невозможно продолжить */ вернуть НЕУДАЧУ; } локон = Curl_easy_init (); если (завиток) { //prog.lastruntime = 0; //prog.curl = локон; Curl_easy_setopt (curl, CURLOPT_URL, URL); Curl_easy_setopt (curl, CURLOPT_NOPROGRESS, FALSE); /* Устанавливаем функцию обратного вызова */ Curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, **xferinfo2**);//xferinfo); /* передаем указатель структуры в функцию xferinfo */ curl_easy_setopt(curl, CURLOPT_XFERINFODATA, &prog); Curl_easy_setopt (curl, CURLOPT_WRITEFUNCTION, write_data); Curl_easy_setopt (curl, CURLOPT_WRITEDATA, fp); res = curl_easy_perform (завиток); если(рез!= CURLE_OK) { fprintf(stderr, "curl_easy_perform() %d не удалось: %s\n", __LINE__, curl_easy_strerror(res)); рез = ОТКАЗ; } /* всегда очищать */ Curl_easy_cleanup (завиток); } еще { рез = CURLE_FAILED_INIT; fprintf(stderr, "curl_easy_perform() %d не удалось: %s\n", __LINE__, curl_easy_strerror(res)); рез = ОТКАЗ; } fзакрыть (фп); вернуть разрешение; } `
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»