VC6.0下应用libcurl的下载进度函数

VC6.0下应用libcurl的下载进度函数

 

  以下是在VC6.0下应用libcurl下载进度函数的例子

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

}

 

相关帖子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值