libcurl的使用

来源:互联网 发布:55开老婆淘宝店叫什么 编辑:程序博客网 时间:2024/06/06 16:38

libcurl是一个开源的网络传输库,客观的来讲在很多项目中,它被使用的频率是相当高的,但是libcurl的官网上关于如何使用它的文档却写的不是很清楚地。最近,由于公司项目的需要,研究了一下libcurl,遇到了许多困难,记了下来。

 

我使用libcurl主要是实现http服务,那下面的记录也主要是实现http服务过程中遇到的一些问题。

 

libcurl主要提供了两种接口:easy interface和multi interface。两者之间的区别主要是:前者只是最简单的阻塞式服务,后者可以实现非阻塞式服务;对一些性能要求不是很高的需求完全可以使用easy interface,因为它使用起来十分的简单,最令人困惑的地方就是multi interface,似乎使用它总是有一些问题。

 

一、初始化步骤:

在使用libcurl库提供的功能之前都需要调用curl_global_init(CURL_GLOBAL_DEFAULT)来初始化libcurl库,使用完成之后也需要调用

curl_global_cleanup()来清理libcurl库。注意,在你的app中只能结对的调用一次这两个函数,调用多次所产生的结果,未知!

 

二、使用easy interface

要使用easy interface,首先你需要创建一个easy handle。对于每一个session你都需要easy handle来帮你执行。原则上,你不能多线程中共享一个easy handle。

easy interface是一种同步的接口,也就是说同一时间只能传输一个文件,并且知道完成传输才返回。知道这一点,就不难理解为什么说easy interface性能不是很高。

对于easy interface的使用,关键在于curl_easy_setopt函数,通过这个函数,我们可以设置相关的属性,包括设置url,timeout,http协议(究竟是post,get还是其他)。

由于easy interface比较简单,curl的官网上关于这一部分的文档也比较清楚,故省略。

 

三、使用multi interface

 

 

原创粉丝点击