libcurl库进行http通讯-一些主要的函数
这里就简介一下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类型的指针.
libcurl库进行http通讯-一些主要的函数的更多相关文章
- C/C++ 用libcurl库进行http通讯网络编程
C/C++ 用libcurl库进行http通讯网络编程 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_p ...
- C++ 用libcurl库进行http通讯网络编程 【转】
http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html C++ 用libcurl库进行http通讯网络编程 目录索引: 一.Lib ...
- C++ 用libcurl库进行http通讯网络编程
使用libcurl完成http通讯,很方便而且是线程安全,转载一篇比较好的入门文章 转载自 http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724 ...
- C++ 用libcurl库进行http通讯网络编程(转)
转载:http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三. ...
- C++ 用libcurl库进行http通讯网络编程[转]
http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.cur ...
- libcurl库进行http通讯-开篇
从今天開始介绍一些经常使用的库. 首先就来写一写关于libcurl库. libcurl主要功能就是用不同的协议连接和沟通不同的server~也就是相当封装了的sockPHP 支持libcurl(同意你 ...
- 最全的libcurl库资源整理
C++ 用libcurl库进行http 网络通讯编程 百度登陆协议分析!!!用libcurl来模拟百度登陆 C++使用libcurl做HttpClient 使用libcurl库进行HTTP的下载 li ...
- C++ 用libcurl库进行http 网络通讯编程
一.LibCurl基本编程框架libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcur ...
- Cocos2d-x移植到WindowsPhone8移植问题-libcurl库移植问题
在Cocos2d-x 3.x最新版本中提供了Windows Phone 8平台移植libcurl库所需要的头文件和库文件.但要在Windows Phone 8平台成功移植libcurl库还是很不容易, ...
随机推荐
- GCC编译连接c++代码的四个阶段(Four stages of GCC compilation of C++ code)
There are four stages for GCC to compile c/c++ applications: Preprocessing, Compilation proper, Asse ...
- Java面试问题——线程全面详解总结
一.多线程是什么?为什么要用多线程? 介绍多线程之前要介绍线程,介绍线程则离不开进程. 首先进程 :是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元: ...
- Spring框架系列(六)--事务Transaction
本文绝大部分内容为转载,原文地址:https://blog.csdn.net/trigl/article/details/50968079 除此之外,后面还有延伸内容 事务在企业日常开发中几乎是一定会 ...
- PMP 学习心得
前两天刚考完 PMP,松了一口气,终于考完了,虽然心里有点慌,不知道自己会不会过.学习 PMP 这三个月还是很充实的.不断的看视频,做题目,功夫不负有心人,也算是学到了一些东西.至少知道了一个项目的启 ...
- Sublime 添加右键快捷(其他软件同样方法)
1.进入注册表 开始-->运行-->regedit(或直接win+r,输入regedit)-->回车 2.进入shell目录 [HKEY_CLASSES_ROOT\*\shell] ...
- jupyter notebook的插件安装及文本格式修改
jupyter notebook的插件安装及文本格式修改 1.jupyter notebook拓展插件安装 启动jupyter notebook : 打开控制台输入命令 jupyter noteboo ...
- Unity常用常找(二)
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/51315050 作者:car ...
- RabbitMQ-linux安装rabbitmq(二)
说明 本地装了个虚拟机模拟集群 所以记下安装步骤 安装Erlang 安装类库 yum -y install ncurses-devel yum -y install openssl-devel yum ...
- mongodb replica set 添加/删除节点方法--http://www.ii123.com/jc/bc/bczh/258948.html
replica set多服务器主从,添加,删除节点,肯定会经常遇到的.下面详细说明一下,添加,删除节点的2种方法. 一,利用rs.reconfig,来添加,删除节点 1,添加节点 代码如下 re ...
- [luoguP1941] 飞扬的小鸟(DP)
传送门 动归,用f[i][j]表示到达第I列高度为j时最少需要飞的次数,容易想到最裸的转移: f[i][j]=min(min(f[i-1][j-up[i-1]*k]+k),f[i-1][j+down[ ...