2012-06-08 2 views
1

Мне нужно знать статус моей загрузки, используя libcurl в C. Я обнаружил, что мне нужно использовать CURLOPT_PROGRESSFUNCTION.libcurl c CURLOPT_PROGRESSFUNCTION

int progress_func(void* ptr, double TotalToDownload, double NowDownloaded, 
        double TotalToUpload, double NowUploaded) 
{ 
    //Bla bla 
} 

curl_easy_setopt(curl, CURLOPT_NOPROGRESS, FALSE); 
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progress_func); 

Я не могу понять две вещи: 1) Эта функция progress_func "как часто" называется? 2) Как передать другие параметры функции progress_func? Потому что я должен написать статус соединения (скорость, tot загружен) в файле с переменным url, поэтому я должен передать этот URL-адрес функции.

Благодаря

+0

См. Http://stackoverflow.com/questions/10614062/libcurl-console-progress-bar-for-file-download/10614757#10614757 для получения подробного ответа на индикаторы выполнения. – jmc

ответ

3

См CURLOPT_PROGRESSDATA:

struct my_progress_data_struct 
{ 
    /* Some data fields */ 
}; 

struct my_progress_data_struct progress_data; 

curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, &progress_data); 

Данные будут переданы в ptr аргумент о ходе обратного вызова.

Что касается первого вопроса, то в соответствии с API reference обратный вызов будет называться «примерно один раз в секунду или раньше».

Смежные вопросы