1

我需要知道我在 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 的文件中,所以我必须将这个 url 传递给函数。

谢谢

4

1 回答 1

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 参考,回调将被称为“大约每秒一次或更快”。

于 2012-06-08T09:22:22.643 回答