读书人

libcurl 怎么进行下载进度查看

发布时间: 2012-02-07 17:45:37 作者: rapoo

libcurl 如何进行下载进度查看
如果,希望能给出经过测试的代码。
包括写文件的确write_func和progress_func回调函数的定义。谢谢。。

[解决办法]
以下是我在VC6下成功运行的程序:

C/C++ code
#include <stdio.h>#include <curl/curl.h>#include <curl/types.h> /* new for v7 */#include <curl/easy.h> /* new for v7 */size_t my_write_func(void *ptr, size_t size, size_t nmemb, FILE *stream){  return fwrite(ptr, size, nmemb, stream);}size_t my_read_func(void *ptr, size_t size, size_t nmemb, FILE *stream){  return fread(ptr, size, nmemb, stream);}int my_progress_func(char *progress_data,                     double t, /* dltotal */                     double d, /* dlnow */                     double ultotal,                     double ulnow){  printf("%s %g / %g (%g %%)\n", progress_data, d, t, d*100.0/t);  return 0;}int main(int argc, char **argv){  CURL *curl;  CURLcode res;  FILE *outfile;  char *url = "http://curl.haxx.se/download/curl-7.19.5-win32-nossl-sspi.zip";  char *progress_data = "* ";  curl = curl_easy_init();  if(curl)  {    outfile = fopen("a.zip", "wb");    curl_easy_setopt(curl, CURLOPT_URL, url);    curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write_func);    curl_easy_setopt(curl, CURLOPT_READFUNCTION, my_read_func);    curl_easy_setopt(curl, CURLOPT_NOPROGRESS, FALSE);    curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, my_progress_func);    curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, progress_data);    res = curl_easy_perform(curl);    fclose(outfile);    /* always cleanup */    curl_easy_cleanup(curl);  }  return 0;} 

读书人网 >C++

热点推荐