这里就简介一下libcurl的一些主要的函数。

调用curl_global_init()初始化libcurl

调用curl_easy_init()函数得到 easy interface型指针

调用curl_easy_setopt()设置传输选项

依据curl_easy_setopt()设置的传输选项,实现回调函数以完毕用户特定任务

调用curl_easy_perform()函数完毕传输任务

调用curl_easy_cleanup()释放内存

CURLcode curl_global_init(long flags);

* url_global_init() should be invoked exactly once for each application that

* uses libcurl and before any call of other libcurl functions.

*

* This function is not thread-safe!

描写叙述:

这个函数仅仅能用一次。(事实上在调用curl_global_cleanup 函数后仍然可再用)

假设这个函数在curl_easy_init函数调用时还没调用,它讲由libcurl库自己主动调用,所以多线程下最好主动调用该函数以防止在线程中curl_easy_init时多次调用。

注意:尽管libcurl是线程安全的。但curl_global_init是不能保证线程安全的,所以不要在每一个线程中都调用curl_global_init。应该将该函数的调用放在主线程中。

參数:flags

CURL_GLOBAL_ALL //初始化全部的可能的调用。

CURL_GLOBAL_SSL //初始化支持 安全套接字层。

CURL_GLOBAL_WIN32 //初始化win32套接字库。

CURL_GLOBAL_NOTHING //没有额外的初始化。

void curl_global_cleanup(void);

* curl_global_cleanup() should be invoked exactly once for each application

* that uses libcurl

描写叙述:在结束libcurl使用的时候。用来对curl_global_init做的工作清理。

相似于close的函数。

注意:尽管libcurl是线程安全的,但curl_global_cleanup是不能保证线程安全的。所以不要在每一个线程中都调用curl_global_init,应该将该函数的调用放在主线程中。

char *curl_version( );

*Returns a static ascii string of the libcurl version.

描写叙述: 打印当前libcurl库的版本号。

CURL *curl_easy_init( );

描写叙述:

curl_easy_init用来初始化一个CURL的指针(有些像返回FILE类型的指针一样). 对应的在调用结束时要用curl_easy_cleanup函数清理.

一般curl_easy_init意味着一个会话的開始. 它会返回一个easy_handle(CURL*对象), 一般都用在easy系列的函数中.

5 void curl_easy_cleanup(CURL *handle);

描写叙述:

这个调用用来结束一个会话.与curl_easy_init配合着用.

參数:

CURL类型的指针.

6 CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);

描写叙述: 这个函数最重要了.差点儿全部的curl 程序都要频繁的使用它.它告诉curl库.程序将有怎样的行为. 比方要查看一个网页的html代码等.(这个函数有些像ioctl函数)參数:

1 CURL类型的指针

2 各种CURLoption类型的选项.(都在curl.h库里有定义,man 也能够查看到)

3 parameter 这个參数 既能够是个函数的指针,也能够是某个对象的指针,也能够是个long型的变量.它用什么这取决于第二个參数.

CURLoption 这个參数的取值非常多.详细的能够查看man手冊.

7 CURLcode curl_easy_perform(CURL *handle);

描写叙述:这个函数在初始化CURL类型的指针 以及curl_easy_setopt完毕后调用. 就像字面的意思所说perform就像是个舞台.让我们设置的

option 运作起来.參数:

CURL类型的指针.

最新文章

  1. [转]通过Visual Studio为Linux编写C++代码
  2. nginx tomcat session丢失的问题
  3. ubuntu共享文件配置
  4. UOJ#35 后缀排序
  5. Android IOS WebRTC 音视频开发总结(二八)-- 多人视频方案介绍
  6. linux驱动面试题目汇总
  7. Django之模板语言
  8. 「OC」 基本语法
  9. django新手第一课
  10. 《Java2 实用教程(第五版)》学习指导
  11. winform 写App.config配置文件——IT轮子系列(八)
  12. 【TCP协议】(3)---TCP粘包黏包
  13. SQLServer之修改用户自定义数据库用户
  14. PhoenixFD插件流体模拟——UI布局【Interaction】详解
  15. parseInt ,parseDouble,parseFloat
  16. python 实现杨辉三角(依旧遗留问题)
  17. 常见聚类算法——K均值、凝聚层次聚类和DBSCAN比较
  18. 【BZOJ1814】Ural 1519 Formula 1 (插头dp)
  19. 【Hadoop学习之十一】MapReduce案例分析三-PageRank
  20. C/C++.文件是否存在

热门文章

  1. IOS 11,UIWebView内容随状态栏高度下移,导致状态栏不透明
  2. ThinkPHP---案例2--职员管理功能
  3. 【原】thinkphp修改Redis操作类,支持选择数据库功能及添加其他方法
  4. Win实用好用软件清单推荐
  5. cgroup代码浅析(1)
  6. 自定义php函数的mysql数据库pdo包装
  7. enote笔记语言(3)(ver0.3)
  8. 安迪的第一个字典(Andy's First Dictionary,Uva 10815)
  9. 自定义属性Attribute的运用
  10. C++ <queue>用法