- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
libcurl详解
curl-libcurl 详解
目标
本文档介绍了在应用程序开发过程中,如何正确使用libcurl 的基本方式和指导原则。文档使用C 语
言来调用libcurl 的接口,当然也适用于其他与C 语言接近的语言。
文档主要针对使用libcurl 来进行开发的人员。文档所掼的应用程序泛指你写的源代码,这些代码使
用了libcurl 进行数据传输。
编译源码
有很多种不同的方式来编译C 语言代码。这里使用UNIX 平台下的编译方式。即使你使用的是其他
的操作系统,你仍然可以通过阅读本文档来获取许多有用的信息。
编译
你的编译器必须知道libcurl 头文件的位置。所以在编译的时候,你要设置头文件的包含路径。可以
使用curl-config 工具来获取这方面的信息:
$ curl-config –cflags
链接
编译完源码(这时的源代码不是指libcurl 的源代码,你是你自己写的程序代码)之后,你还必须把
目标文件链接成单个可执行文件。你要链接libcurl 库,以及libcurl 所依赖的其他库,例如OpenSLL
库。当然可能还需要一些其他的操作系统库。最后你还要设置一些编译选项,当然可 以使用curl-config
工具简化操作:
$curl-config –libs
是否使用SSL
定制编译libcurl 。与其他库不同的是,libcurl 可以定制编译,根据实际需要是否支持某些特性,如是
否支持SSL 传输,像HTTPS 和FTPS 。如果决定需要支持SSL ,必须在编译时正确的设置。可以使
用’curl-config’ 来判断libcurl 库是否支持SSL :
$ curl-config –feature
autoconf 宏
当你编写配置脚本来检测libcurl 及其相应设置时,你可以使用预定义宏。文档docs/libcurl/libcurl.m4
告诉你如何使用这些宏。
跨平台的可移植的代码
libcurl 的开发人员花费很大的努力,使libcurl 尽可能在大多数平台上正常运行。
全局初始化
应用程序在使用libcurl 之前,必须先初始化libcurl 。libcurl 只需初始化一次。可以使用以下语句进
行初始化:
curl_global_init();
curl_global_init()接收一个参数,告诉libcurl 如何初始化。参数CURL_GLOBAL_ALL 会使libcurl 初
始化所有的子模块和一些默认的选项,通常这是一个比较好的默认参数值。还有两个可选值:
CURL_GLOBAL_WIN32
只能应用于Windows 平台。它告诉libcurl 初始化winsock 库。如果winsock 库没有正确地初始化,
应用程序就不能使用socket 。在应用程序中,只要初始化一次即可。
CURL_GLOBAL_SSL
如果libcurl 在编译时被设定支持SSL ,那么该参数用于初始化相应的SSL 库。同样,在应用程序
中,只要初始化一次即可。
libcurl 有默认的保护机制,如果在调用curl_easy_perform 时它检测到还没有通过curl_global_init 进行
初始化,libcurl 会根据当前的运行时环境,自动调用全局初始化函数。但必须清楚的是,让系统自已初
始化不是一个好的选择。
当应用程序不再使用libcurl 的时候,应该调用curl_global_cleanup 来释放相关的资源。
在程序中,应当避免多次调用curl_global_init 和curl_global_cleanup 。它们只能被调用一次。
libcurl 提供的功能
在运行时根据libcurl 支持的特性来进行开发,通常比编译时更好。可以通过调用curl_version_info 函
数返回的结构体来获取运行时的具体信息,从而确定当前环境下libcurl 支持的一些特性。下面是笔者在
visual studio2008 中调用相关函数获取libcurl 版本信息的截图:
使用easy interface
首先介绍libcurl 中被称为easy interface 的api 函数,所有这些函数都是有相同的前缀:curl_easy 。
当前版本的libcurl 也提供了multi interface ,关于这些接口的详细使用,在下面的章节中会有介绍。在使
用multi interface 之前,你首先应该理解如何使用easy int
您可能关注的文档
- LC-MS-理论.pdf
- LCA数据库开发与数据质量.pdf
- lcm18调试资料20100414.pdf
- LCD测试方案.pdf
- LD48-1993起重机械吊具与索具安全规程1994.02.01.pdf
- LCZ-803矿用隔爆兼本安型超声波流量计说明书.pdf
- LDAR 现场实施流程及源强估算 20140515.pdf
- LD 发动机.pdf
- LD767X示例航线飞行手册.pdf
- LDY-S说明书.pdf
- 2024年江西省高考政治试卷真题(含答案逐题解析).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)物理试卷(含答案详解).pdf
- 2025年四川省新高考八省适应性联考模拟演练(二)地理试卷(含答案详解).pdf
- 2024年内蒙通辽市中考化学试卷(含答案逐题解析).docx
- 2024年四川省攀枝花市中考化学试卷真题(含答案详解).docx
- (一模)长春市2025届高三质量监测(一)化学试卷(含答案).pdf
- 2024年安徽省高考政治试卷(含答案逐题解析).pdf
- (一模)长春市2025届高三质量监测(一)生物试卷(含答案).pdf
- 2024年湖南省高考政治试卷真题(含答案逐题解析).docx
- 2024年安徽省高考政治试卷(含答案逐题解析).docx
文档评论(0)