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);

2 つのことを理解できません: 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 リファレンスによると、コールバックは「およそ 1 秒に 1 回またはそれより早く」呼び出されます。

于 2012-06-08T09:22:22.643 に答える