libcurl 通过http协议下载文件并显示下载进度

简介: vc6 测试工程下载地址: http://download.csdn.net/detail/mtour/8068053   代码如下:     [cpp] view plain copy     size_t my_write_func(void *ptr, siz...

vc6 测试工程下载地址: http://download.csdn.net/detail/mtour/8068053

 

代码如下:

 

 

[cpp]  view plain  copy
 
 在CODE上查看代码片派生到我的代码片
  1. size_t my_write_func(void *ptr, size_t size, size_t nmemb, FILE *stream)  
  2. {  
  3.   return fwrite(ptr, size, nmemb, stream);  
  4. }   
  5.    
  6. int my_progress_func(char *progress_data,  
  7.                      double t, /* dltotal */  
  8.                      double d, /* dlnow */  
  9.                      double ultotal,  
  10.                      double ulnow)  
  11. {  
  12.   printf("%s %g / %g (%g %%)\n", progress_data, d, t, d*100.0/t);  
  13.   return 0;  
  14. }  
  15.    
  16. int main(int argc, char **argv)  
  17. {  
  18.   CURL *curl;  
  19.   CURLcode res;  
  20.   FILE *outfile;  
  21.   char *url = "http://10.10.1.4/d/c00000000000039/2014-10-22/10-28-35.ps";  
  22.   char *progress_data = "* ";  
  23.    
  24.   curl = curl_easy_init();  
  25.   if(curl)  
  26.   {  
  27.     outfile = fopen("test.ps", "wb");  
  28.    
  29.     curl_easy_setopt(curl, CURLOPT_URL, url);  
  30.     curl_easy_setopt(curl, CURLOPT_WRITEDATA, outfile);  
  31.     curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, my_write_func);  
  32.     curl_easy_setopt(curl, CURLOPT_NOPROGRESS, FALSE);  
  33.     curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, my_progress_func);  
  34.     curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, progress_data);  
  35.    
  36.     res = curl_easy_perform(curl);  
  37.    
  38.     fclose(outfile);  
  39.     /* always cleanup */  
  40.     curl_easy_cleanup(curl);  
  41.   }  
  42.   return 0;  
  43. }  
目录
相关文章
|
1月前
|
网络协议 网络安全 数据安全/隐私保护
HTTP 协议浅析
通过对HTTP协议的深入了解,开发者可以更好地设计和优化Web应用,提高数据传输效率和用户体验。
114 21
|
2月前
|
缓存 网络协议 前端开发
Web 性能优化|了解 HTTP 协议后才能理解的预加载
本文旨在探讨和分享多种预加载技术及其在提升网站性能、优化用户体验方面的应用。
Web 性能优化|了解 HTTP 协议后才能理解的预加载
|
2月前
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验。
246 25
|
2月前
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验
140 28
|
2月前
|
XML JSON 前端开发
HTTP协议,Content-Type格式介绍篇
通过理解和正确使用Content-Type头字段,可以确保数据在网络上传输时的正确性和高效性,提升网络应用的可靠性和用户体验。
296 18
|
3月前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
3月前
|
缓存 网络协议 算法
从零开始掌握HTTP协议
本文介绍HTTP协议的演变,从HTTP1.0到HTTP2.0。HTTP1.0为无状态连接,每次请求独立;HTTP1.1引入持久连接、管道化请求和更多状态码;HTTP2.0采用二进制分帧、多路复用、头部压缩及服务器主动推送,大幅提升性能与用户体验。了解这些区别有助于开发者优化应用和服务。
|
3月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
208 3
|
4月前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
103 11
|
4月前
|
缓存 安全 网络协议
HTTPS协议的历史发展
HTTPS协议的历史发展
113 8