Ubuntu 14.04 64bit上curl-7.37源码包中的sample 源码示例研究

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来进行传输
我们在开发程序的过程中,就按照这里的样例代码照着编写就可以了。

参考文献
[1].http://www.curl.haxx.se/
[4].http://blog.csdn.net/lizhi200404520/article/details/6583710
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值