libcurl:开源的http库学习
2015-06-27 13:53
441 查看
其实curl还可以用来做ftp等协议,这里只用到http下载功能,公司用的是自己写的http库,对一些异常处理做的不够好,出了两次问题,所以决定会稳定的curl。
第一次是因为cdn采取了cname的解析方式,但是公司的库没有处理cname方式,所以就悲剧了,赶紧加上了cname的处理方式。
第二次是因为获取要下载的文件时,需要先获取文件长度时(Head),发送Head请求后,网络库是等待web server主动断开后,再去解析数据获取长度(Content-Length),但是由于cdn改变了策略,加了一个连接复用的优化没有和我们断开连接,于是我们又悲剧了。
经过两次打击,决定使用libcurl,毕竟开源项目经过大家的努力对于这些异常情况处理也很完善了。
先使用简单的easy模式,发现了一个问题,就是会出现卡死的情况,就是长时间收不到数据,
第一次是因为cdn采取了cname的解析方式,但是公司的库没有处理cname方式,所以就悲剧了,赶紧加上了cname的处理方式。
第二次是因为获取要下载的文件时,需要先获取文件长度时(Head),发送Head请求后,网络库是等待web server主动断开后,再去解析数据获取长度(Content-Length),但是由于cdn改变了策略,加了一个连接复用的优化没有和我们断开连接,于是我们又悲剧了。
经过两次打击,决定使用libcurl,毕竟开源项目经过大家的努力对于这些异常情况处理也很完善了。
先使用简单的easy模式,发现了一个问题,就是会出现卡死的情况,就是长时间收不到数据,
相关文章推荐
- 项目笔记:4.引入CDN内容分发网络,实现网站静态元素加速
- $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别
- AspCms标签。链接地址:http://biaoqian.iasp.com.cn/
- TCP协议随笔
- 网络爬虫中动态的获取页面编码
- 黑马程序员--Java学习日记之网络编程
- CNN卷积神经网络代码理解
- CNN卷积神经网络推导和实现
- java网络编程实现客户端连接服务器端,并发送消息例子(1)。(阻塞式的方法)
- Python socket编程(TCP)
- http 返回码 405 解决方案之一
- AFNetworking 2.5.x 网络请求的封装
- 《Linux Device Drivers》 第十七章 网络驱动程序——note
- win7开机不能连接网络要重启才能连接解决
- 网络以及协议基础知识总结
- TCP/UDP详解二
- httpd根据IP创建多个虚拟主机时,出现 (13)Permission denied: access to /index.html denied
- AJAX中的XMLHttpRequest对象
- TCP/IP参考模型的详解
- httpclient客户端thread+handler+message(get)