码迷,mamicode.com
首页 > Web开发 > 详细

libcurl原理解析(1) - 引言

时间:2015-07-13 06:38:00      阅读:1510      评论:0      收藏:0      [点我收藏+]

标签:libcurl介绍   libcurl源码解析   libcurl原理解析   curl原理解析   curl源码分析   

1.引言

在爱立信最近参与的项目是一个数据转发程序,基于http协议。主要使用到了epoll与libcurl这两种技术。

本人负责的是里边的传输模块,也是项目的主要模块。刚好使用到了libcurl这个库,并且用它与epoll进行结合。所以基本上从开始的架构设计,到开发,到性能调试,bug fix,基本贯穿了整个项目开发周期。限于开发进度要求,一直都只是用用libcurl的API,偶尔碰到难题时,会看看官方的document,或者少部分源码。但是,一直都没有好好看看它的内部实现机制。现在项目结束了,可以静下心详细研究下它的内部实现。

2.libcurl介绍

libcurl是一个开源的客户端url传输库,支持众多的协议,包括DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP等。

libcurl支持SSL证书, HTTP POST, HTTP PUT,FTP上传,基于表单的HTTP上传、代理、HTTP/2、cookies、用户名+密码认证(Basic, Plain, Digest, NTLM等)、下载/上传文件的断点续传,http代理服务器管道等。

libcurl是高度可移植的,可以工作在不同的平台上,支持Windows,Unix,Linux等。

libcurl是免费的,线程安全的,IPV6兼容的,同时它还有很多其他非常丰富的特性。libcurl已经被很多知名的大企业以及应用程序所采用。

相关的文档以及源码可以参考官方链接:http://curl.haxx.se/libcurl/

3.方向

本系列的后续文章,主要会专注于下面所列的与libcurl相关的主题:

1).libcurl中对select()&poll()的使用方法。

2).libcurl中最重要的easy curl与multi curl的原理,架构,以及它们之间的交互机制。

3).探讨一些重要的回调函数的实现机制。例如:

easy curl中的
CURLOPT_WRITEFUNCTION,
CURLOPT_READFUNCTION,
CURLOPT_IOCTLFUNCTION,
CURLOPT_SEEKFUNCTION,
CURLOPT_SOCKOPTFUNCTION,
CURLOPT_OPENSOCKETFUNCTION,
CURLOPT_CLOSESOCKETFUNCTION,
CURLOPT_PROGRESSFUNCTION.

以及multi curl中的
CURLMOPT_SOCKETFUNCTION,
CURLMOPT_TIMERFUNCTION.

4).探讨一些重要的easy curl option以及multi curl option在底层socket上的实现方式。

版权声明:本文为博主原创文章,未经博主允许不得转载。

libcurl原理解析(1) - 引言

标签:libcurl介绍   libcurl源码解析   libcurl原理解析   curl原理解析   curl源码分析   

原文地址:http://blog.csdn.net/shltsh/article/details/46855189

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!