curl是Linux平台上(本人不考虑其他平台)很好用的一个工具软件,它有命令行,有C接口API,更常见的编程用途是php和python版本。如果在C/C++平台上使用curl,可以直接去官网http://www.curl.haxx.se/下载最新版的源码来研究。这里以当前官网最新的curl-7.37.1为例说明其附带例子的使用说明。
编译samples实例的方法
在curl-7.37.1/docs/examples/目录下有很多例子,大致有100个左右吧,对我们使用C/C++开发很有帮助:
如何批量编译并运行这些例子呢?我首先是查看该目录下面的README文件来寻求帮助:
批量编译的方法是:
直接运行该目录下面的Makefile文件:
make
就会批量生成所有example的可执行文件
单独编译的方法是:
对每个例子,阅读源码时,可能我们需要更改某些代码,比如更改下载链接,添加设置选项等等,使用下面的命令可以单独编译
·curl-config --cc· -o example example.c `curl-config --cflags --libs` 这种方法在Ubuntu 14.04上是可行的
在命令行运行
curl-config --cflags
来获取libcurl头文件的包含路径;在命令行运行
curl-config --libs
来获取libcurl库及其它依赖的库的路径
使用下面的命令
curl-config --feature
来查看libcurl实际支持的特性,参见下面的截图
典型实例说明
从README中我们可以知道每个示例代码的作用,比如我看过下面的例子
10-at-a-time.c 在一个线程中同时下载多个文件,每次10个,代码比较经典
multithread.c 使用多线程(这里是4个)下载多个文件
multi-single.c 在一个线程中同时下载多个文件,混合使用curl的easy和multi接口,这里仅给出1个文件的下载
multi-app.c 在一个线程中同时下载2个文件,上传一个文件,混合使用curl的easy和multi接口,具有实际编程使用价值
multi-double.c 在一个线程中同时下载2个文件,比上例简单
multi-debugcallback.c 在一个线程中同时下载多个文件,在屏幕上打印出数据信息
multi-uv.c 在一个线程中异步多任务,用到epoll和libuv,没有使用select,超高难度,有较高参考价值
asiohiper.cpp 使用boost::asio和multi接口来下载文件,难度较大,具有实际编程参考价值
simple.c 最简单的下载一个url resource,直接使用curl easy api
getinfo.c 获取下载相关的信息,直接使用curl easy api
chkspeed.c 通过下载不同的文件来测试下载速度
progressfunc.c 使用easy api下载某文件时,给出xfer这个选项的具体信息,需要开启CURLOPT_NOPROGRESS选项为0
url2file.c 使用easy api下载一个指定的url,并将响应存为一个文件,我的限速demo就是按照这个写的。
persistant.c 使用easy api,长链接, 在一个tcp连接中连续下载多个文件。这里是连续下载同一台服务器上的2个文件
httpcustomheader.c 使用easy api,设置用户自定义的http header来进行传输
我们在开发程序的过程中,就按照这里的样例代码照着编写就可以了。
linux命令行中curl和wget自动解压功能对比:http://www.linuxdiyf.com/linux/13982.html
Linux如何使用cURL分割下载大文件:http://www.linuxdiyf.com/linux/13524.html
Ubuntu 14.04及衍生版本用户如何安装cURL 7.37.1:http://www.linuxdiyf.com/linux/2369.html
Unix下Curl的使用方法及常用功能记录分享:http://www.linuxdiyf.com/linux/2225.html