我需要知道我在C中使用libcurl下载的状态。我发现我必须使用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函数?因为我必须在具有变量url的文件中写入连接状态(speed,tot下载),所以我必须将此url传递给该函数。
由于
答案 0 :(得分:3)
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,回调将被称为“大约每秒一次或更早”。