size_t test_save(void *ptr, size_t size, size_t nmemb, void *stream)
{
size_t sizes = size * nmemb;
DWORD dwHasWritten;
WriteFile((HANDLE)stream,ptr,sizes,&dwHasWritten,NULL);
return sizes;
} int test_get(const char *url, HANDLE hFile)
{
CURL *pCurl = curl_easy_init();
int responseCode = -1;
CURLcode returnCode = CURLE_OK;
do
{
if (!pCurl)
{
break;
}
returnCode = curl_easy_setopt(pCurl, CURLOPT_CONNECTTIMEOUT, 10); //设置连接超时时间
CURL_BREAK_IF_NOT_OK(returnCode); returnCode = curl_easy_setopt(pCurl, CURLOPT_URL, url); //设置请求链接
CURL_BREAK_IF_NOT_OK(returnCode); returnCode = curl_easy_setopt(pCurl, CURLOPT_WRITEDATA, hFile); //设置CURLOPT_WRITEFUNCTION的最后一个参数值
CURL_BREAK_IF_NOT_OK(returnCode); returnCode = curl_easy_setopt(pCurl, CURLOPT_WRITEFUNCTION, test_save); //设置接收到数据之后的回调函数
CURL_BREAK_IF_NOT_OK(returnCode); returnCode = curl_easy_perform(pCurl); //开始传输
CURL_BREAK_IF_NOT_OK(returnCode); returnCode = curl_easy_getinfo(pCurl, CURLINFO_RESPONSE_CODE, &responseCode); //获取返回信息
} while (0);
if (pCurl)
{
curl_easy_cleanup(pCurl);
}
return responseCode;
} HANDLE hFile = CreateFileW(L"d:\\22.exe", GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ/*|FILE_SHARE_DELETE*/, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE != hFile)
{
test_get("http://dldir1.qq.com/qqfile/qq/QQ8.4/18380/QQ8.4.exe", hFile);
}
CloseHandle(hFile);
hFile = NULL;

libcurl下载文件简易demo的更多相关文章

  1. 使用libcurl下载文件小例

    libcurl是一个很强大的开源网络处理库,支持包括HTTP.HTTPS.FTP……一系列网络协议.用它来进行HTTP的get\post 或者下载文件更是小菜一碟,chrome内核都用到了它,本文主要 ...

  2. libcurl下载文件

    一.初始化 CURL *pHandler = curl_easy_init();   二.设置请求参数: 调用curl_easy_setopt方法,设置选项 curl_easy_setopt(pHan ...

  3. c/c++常用代码--使用libcurl下载文件

    #pragma once #include <stdio.h>#include <stdlib.h> #include <curl/curl.h> #ifdef   ...

  4. Android和FTP服务器交互,上传下载文件(实例demo)

    今天同学说他备份了联系人的数据放在一个文件里,想把它存到服务器上,以便之后可以进行下载恢复..于是帮他写了个上传,下载文件的demo 主要是 跟FTP服务器打交道-因为这个东东有免费的可以身亲哈 1. ...

  5. libcurl开源库在Win7 + VS2012环境下编译、配置详解 以及下载文件并显示下载进度 demo(转载)

    转载:http://blog.csdn.net/fengshuiyue/article/details/39530093(基本教程) 转载:https://my.oschina.net/u/14207 ...

  6. 使用libcurl开源库和Duilib做的下载文件并显示进度条的小工具

    转载:http://blog.csdn.net/mfcing/article/details/43603525 转载:http://blog.csdn.net/infoworld/article/de ...

  7. 使用libcurl下载https地址的文件

    使用libcurl下载https地址的文件 void downLoadFile(std::string filename, std::string newFilename) { CURL *curl_ ...

  8. libcurl使用心得-包括下载文件不存在处理相关(转)

    libcurl使用心得 Libcurl为一个免费开源的,客户端url传输库,支持FTP,FTPS,TFTP,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE和LDAP,跨平台,支持 ...

  9. HDFS设计思路,HDFS使用,查看集群状态,HDFS,HDFS上传文件,HDFS下载文件,yarn web管理界面信息查看,运行一个mapreduce程序,mapreduce的demo

    26 集群使用初步 HDFS的设计思路 l 设计思想 分而治之:将大文件.大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析: l 在大数据系统中作用: 为各类分布式 ...

随机推荐

  1. ubuntu下的c/c++环境搭建

    原文地址:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274556.html ubuntu下的c/c++环境搭建是比较简单,因为有apt和新立得 ...

  2. 安卓网络请求之——OkHttp学习

    之前做安卓项目的时候,HTTP请求用的是android api中的HttpURLConnection和HttpClient,编码比较繁琐,自己封装的也不好.后来知道有很多网络请求的第三方框架,可以方便 ...

  3. 所谓has a 和 is a

    在 C# 中 很好理解: {  is    a: 继承关系.    has a: 成员关系,其他类是本类的成员.} 在C++ 中稍微复杂一点: {  由于有多重继承, 继承也可能是has a,类似C# ...

  4. Number Sequence(HDU 1005 构造矩阵 )

    Number Sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  5. Java学习笔记--对象克隆

    转自:Edward_qing_Lee 的专栏 http://blog.csdn.net/edward_qing_lee/article/details/8249102 一.java 方法参数 理解: ...

  6. iOS界面调试工具 Reveal-备用

    Reveal是一个iOS程序界面调试工具.使用Reveal,我们可以在iOS开发时动态地查看和修改应用程序的界面. 对于动态或复杂的交互界面,手写UI是不可避免的.通过Reveal,我们可以方便地调试 ...

  7. angularJs项目实战!03:angularjs与其他类库的协作

    引言:angularjs是一个中等重量级的前端开发框架 HTML是一门很好的为静态文本设计的语言,但要构建动态的web应用它就显的乏力了.通常,我们使用以下技术来解决静态网页技术在构建动态应用上的不足 ...

  8. linux sar查看网络流量

    sar -n DEV 1 10 -n { keyword [,...] | ALL } Report network statistics. IFACE Name of the network int ...

  9. 【转】Android中BindService方式使用的理解

    原文网址:http://www.cnblogs.com/onlylittlegod/archive/2011/05/15/2046652.html 最近学习了一下Android里面的Service的应 ...

  10. SRM 598 DIV1

    A 只有3种情况:200以上的单独装,3个100的装一起,某两个u,v装一起且u+v<=300, 所以做法是从大到小判断每个大小的最大能与它装一起的是谁,最后剩下100的特判. B 第一轮如果未 ...