C++实战(三):使用libcurl实现文件下载

老子说,胜人者有力,自胜者强。

我们之所以不断的学习,是因为我们想让今天的自己比昨天更加出色。

实战三的目标是利用libcurl实现文件的下载。libcurl是一个支持多种协议的文件传输库。目前支持的协议有DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP。libcurl强大如斯,不过这次我们仅仅是利用它发送一个http的GET请求,然后将返回的数据保存到文件中。

编译libcurl(windows环境)

环境要求:Microsoft Visual Studio

  1. 从官网下载curl的源码(http://curl.haxx.se/download.html),代码目录如下图傲游截图20160131202453
  2. 打开Developer Command Prompt for VS2013(我的vs版本是2013,工具目录是C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts)并cd到curl源码的winbuild目录
  3. 执行nmake /f Makefile.vc mode=static VC=12(更详细的编译参数见winbuild\BUILD.WINDOWS.txt)
  4. 编译成功后会在源码的根目录生成builds文件夹,所有编译的产物都在里面

新建工程并进行libcurl相关配置

  1. 新建空的win32控制台程序
  2. 设置头文件路径(D:\tools\curl-7.46.0\curl-7.46.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\include\curl)傲游截图20160131204809
  3. 预处理器定义,添加”CURL_STATICLIB”傲游截图20160131205138
  4. 设置静态链接库(D:\tools\curl-7.46.0\curl-7.46.0\builds\libcurl-vc12-x86-release-static-ipv6-sspi-winssl\lib\libcurl_a.lib)sl
  5. 处理冲突:忽略特定默认库”MSVCRT.lib”傲游截图20160131205330

代码演示

代码逻辑比较简单,就不过多说明了。

这段代码其实只是完成了文件下载功能中最基础的部分,比如这里的文件名是固定的,并未从HTTP返回头中获取真正的文件名,这个任务就先留给读者尝试实现吧。

发表评论

电子邮件地址不会被公开。 必填项已用*标注