libcurl库浅析
先放上libcurl官方文档:链接
第一步:全局初始化
#include <curl/curl.h>
CURLcode curl_global_init(long flags );
在使用libcurl库的时候需要运行上面的函数生成所需要的环境。这个函数在整个程序进程当中只能运行一次。相对应的是curl_global_cleanup :用来清除环境。常用的falgs为下面几个。
- CURL_GLOBAL_ALL:初始化所有条件,建议使用这个默认值
- CURL_GLOBAL_SSL:初始化 SSL相关条件
- CURL_GLOBAL_WIN32 :初始化 Win32 socket 库
更多的可以参考官方技术文档。
第二步:创建单个句柄
此处为了简单选用easy接口为例,对于multi接口也类似,详细可以查看官方技术文档。
如果你只是需要使用默认参数只需要执行下面的函数
easyhandle = curl_easy_init();
如果需要修改里面的参数可以利用curl_easy_setopt 函数自定义生成自己的句柄。以http请求为例(其他例如FTP、TFTP、SMTP等见官方文档)例如:
curl_easy_setopt(*easyhandle,CURLOPT_POST,1L);//设置利用http的方法为post
curl_easy_setopt(*easyhandle,CURLOPT_POSTFIELDS,*send_buf);//设置需要发送的数据,send_buf里面存放了需要发送的数据。数据格式需要为网站能够解析的格式,因为libcurl不会编解码数据。
curl_easy_setopt(*easyhandle,CURLOPT_TIMEOUT,TIME——OUT);//用于设置传输时间
curl_easy_setopt(*easyhandle,CURLOPT_URL,URL);//设置利用http请求链接
上面的参数根据自己需要设置,下面是http一些其他参数的意思:
- CURLOPT_WRITEFUNCTION,CURLOPT_WRITEDATA:通过设定一个回调函数,执行libcurl在接受到数据后用户想进行的操作,通常函数多做数据保存的功能,如处理下载文件。
- CURLOPT_WRITEDATA 用于表明CURLOPT_WRITEFUNCTION函数中的stream指针的来源,说白了就是设定回调函数的第四个参数的数据类型。回调函数原型为:size_t function( void *ptr, size_t size, size_t nmemb, void *stream);
- CURLOPT_UPLOAD:就是让libcurl做好上传的准备。如果传输协议是http的话,uoload就是发送put。
- CURLOPT_SSL_VERIFYPEER:该函数多用于设定curl忽略对网站证书的检查(不管忽略不忽略,curl都是检查的)。
- CURLOPT_HTTPGET: 将curl向服务器交互数据的方式改变为get
第三步: 连接远程网站
success = curl_easy_perform(easyhandle);
第四步: 获取返回数据
#include <curl/curl.h>
CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );
第五步: 结束单个句柄处理
#include <curl/curl.h>
void curl_easy_cleanup(CURL * handle );
步骤二到步骤五为一个链接处理过程,整个程序当中可以设置成循环执行步骤二到步骤五来处理多个链接。
第六步: 结束整个处理
#include <curl/curl.h>
void curl_global_cleanup(void);
结束整个处理流程之后调用此函数,清除整个环境,释放资源。
libcurl库浅析的更多相关文章
- 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基本编程框架 二.一些基本的函数 三. ...
- Cocos2d-x移植到WindowsPhone8移植问题-libcurl库移植问题
在Cocos2d-x 3.x最新版本中提供了Windows Phone 8平台移植libcurl库所需要的头文件和库文件.但要在Windows Phone 8平台成功移植libcurl库还是很不容易, ...
- Cocos开发中Visual Studio下libcurl库开发环境设置
我们介绍一下win32中Visual Studio下libcurl库开发环境设置.Cocos2d-x引擎其实已经带有为Win32下访问libcurl库,Cocos2d-x 3.x中libcurl库文件 ...
- C++ 用libcurl库进行http通讯网络编程[转]
http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.cur ...
- C/C++ 用libcurl库进行http通讯网络编程
C/C++ 用libcurl库进行http通讯网络编程 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_p ...
- C语言 HTTP上传文件-利用libcurl库上传文件
原文 http://justwinit.cn/post/7626/ 通常情况下,一般很少使用C语言来直接上传文件,但是遇到使用C语言编程实现文件上传时,该怎么做呢? 借助开源的libcurl库,我们 ...
- C++ 用libcurl库进行http 网络通讯编程
一.LibCurl基本编程框架libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcur ...
- HTTP多线程下载+断点续传(libcurl库)
目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_perform 函数说明(error 状态码) 五.lib ...
随机推荐
- cnblogs侧边栏访客统计 小插件
之前博客的侧边栏一直用的是flagcounter,直观简洁又好看,近期恍然发现被博客园禁了.禁用原因据说是由于flagcounter将香港(HongKong).台湾(TaiWan)和澳门(Macau) ...
- php PDO getlastsql写法
php PDO getlastsql写法有些时候 运行失败需要查看 sql语句 原型有没有语法错误 这个时候就用 下面的函数就是把问号替换成 值 就可以看到原型了<pre>function ...
- PHP获取图片每个像素点
PHP获取图片每个像素点<pre> $i = imagecreatefromjpeg("test.jpg"); //图片路径 for ($x = 0; $x < ...
- javascript 字符串转化成函数执行
javascript 字符串转化成函数执行<pre>function func_abc(){ alert('a');}var str = "func_abc";eval ...
- 【algo&ds】2.线性表
1.线性表 线性表(英语:Linear List)是由n(n≥0)个数据元素(结点)a[0],a[1],a[2]-,a[n-1]组成的有限序列. 其中: 数据元素的个数n定义为表的长度 = " ...
- 关于Eratosthenes筛子算法筛选小于n的素数的理解
今天在学习Java核心技术第九章集合框架中的BitSet时,遇到了这个算法.Eratosthenes筛子算法时一个查找素数的方法,这并不是查找素数的最好方法,但是测试编译程序性能的一种流行的基准. 一 ...
- PHP实现微信企业付款到个人零钱步骤
微信支付企业付款到零钱功能应用广泛,比如微信红包奖励,业务结算等.通过企业向个人付款,付款资金将直接进入用户微信零钱. 一 开通条件 付款资金 企业付款到零钱资金使用商户号余额资金. 根据商户号的 ...
- nyoj 198-数数 (python, string[::-1])
198-数数 内存限制:64MB 时间限制:3000ms 特判: No 通过数:16 提交数:25 难度:2 题目描述: 我们平时数数都是喜欢从左向右数的,但是我们的小白同学最近听说德国人数数和我们有 ...
- 在VMware通过挂载系统光盘搭建本地yum仓库
1.首先需要有一个VMware虚拟机: 2.进去虚拟机(这里用Linux下deCentOS进行演示): 3.用root账号进行登录,否则在根目录下没有一些操作权限: 4.打开终端: 5,输入命令“cd ...
- Install python3
wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz tar xf Python-3.7.4.tgz cd Python-3.7. ...