libcurl c CURLOPT_PROGRESSFUNCTION

时间:2012-06-08 09:15:57

标签: c libcurl

我需要知道我在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传递给该函数。

由于

1 个答案:

答案 0 :(得分: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,回调将被称为“大约每秒一次或更早”。