先放上libcurl官方文档:链接

第一步:全局初始化

#include <curl/curl.h>
CURLcode curl_global_init(long flags );

在使用libcurl库的时候需要运行上面的函数生成所需要的环境。这个函数在整个程序进程当中只能运行一次。相对应的是curl_global_cleanup :用来清除环境。常用的falgs为下面几个。

  1. CURL_GLOBAL_ALL:初始化所有条件,建议使用这个默认值
  2. CURL_GLOBAL_SSL:初始化 SSL相关条件
  3. 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一些其他参数的意思:

  1. CURLOPT_WRITEFUNCTION,CURLOPT_WRITEDATA:通过设定一个回调函数,执行libcurl在接受到数据后用户想进行的操作,通常函数多做数据保存的功能,如处理下载文件。
  2. CURLOPT_WRITEDATA 用于表明CURLOPT_WRITEFUNCTION函数中的stream指针的来源,说白了就是设定回调函数的第四个参数的数据类型。回调函数原型为:size_t function( void *ptr, size_t size, size_t nmemb, void *stream);
  3. CURLOPT_UPLOAD:就是让libcurl做好上传的准备。如果传输协议是http的话,uoload就是发送put。
  4. CURLOPT_SSL_VERIFYPEER:该函数多用于设定curl忽略对网站证书的检查(不管忽略不忽略,curl都是检查的)。
  5. 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库浅析的更多相关文章

  1. C++ 用libcurl库进行http通讯网络编程

    使用libcurl完成http通讯,很方便而且是线程安全,转载一篇比较好的入门文章 转载自 http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724 ...

  2. C++ 用libcurl库进行http通讯网络编程(转)

    转载:http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三. ...

  3. Cocos2d-x移植到WindowsPhone8移植问题-libcurl库移植问题

    在Cocos2d-x 3.x最新版本中提供了Windows Phone 8平台移植libcurl库所需要的头文件和库文件.但要在Windows Phone 8平台成功移植libcurl库还是很不容易, ...

  4. Cocos开发中Visual Studio下libcurl库开发环境设置

    我们介绍一下win32中Visual Studio下libcurl库开发环境设置.Cocos2d-x引擎其实已经带有为Win32下访问libcurl库,Cocos2d-x 3.x中libcurl库文件 ...

  5. C++ 用libcurl库进行http通讯网络编程[转]

    http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.cur ...

  6. C/C++ 用libcurl库进行http通讯网络编程

    C/C++ 用libcurl库进行http通讯网络编程 目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_p ...

  7. C语言 HTTP上传文件-利用libcurl库上传文件

    原文  http://justwinit.cn/post/7626/ 通常情况下,一般很少使用C语言来直接上传文件,但是遇到使用C语言编程实现文件上传时,该怎么做呢? 借助开源的libcurl库,我们 ...

  8. C++ 用libcurl库进行http 网络通讯编程

      一.LibCurl基本编程框架libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议.libcur ...

  9. HTTP多线程下载+断点续传(libcurl库)

    目录索引: 一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_perform 函数说明(error 状态码) 五.lib ...

随机推荐

  1. 总结一下 IEnumerable 的例子

    本篇将围绕 <试试 IEnumerable 的 10 个小例子>和<试试 IEnumerable 的另外 6 个小例子>给出的例子,总结一下对于 IEnumerable 接口的 ...

  2. CentOS 6.4 configure error的解决方法

    资料来源:http://blog.sina.com.cn/s/blog_62426dcf0100f2rz.html 虽然上面的文章是针对centOS 5写的,不过经测试也可用于centOS6.4. 自 ...

  3. VS 使用 :新建项目

    1.文件位置不放C盘

  4. Javascript脚本语言

    找组件用 id (唯一) 2.name 样式 使用分类 1 页面中 2 建JS文件 可以放在head也可以在body 工作区可以有 1 全局变量 2 由多个函数构成 标签编辑器 onChange 改变 ...

  5. 更换JDK

    1.更换JDK 1).卸载原有jdk 检查一下系统中的jdk版本 java -version 显示 java version "1.6.0_24" OpenJDK Runtime ...

  6. 建筑行业的新起之秀---BIM

       近年来,BIM在国家在建筑行业的推进下逐渐走近人们的视线,而且BIM技术是作为建筑领域的一项新技术行业发展的越来越好,在很多的建筑场景都用到了BIM建模.施工.运维以及BIM+GIS等以BIM为 ...

  7. 原创|我是如何从零学习开发一款跨平台桌面软件的(Markdown编辑器)

    原始冲动 最近一直在学习 Electron 开发桌面应用程序,目的是想做一个桌面编辑器,虽然一直在使用Typore这款神器,但无奈Typore太过国际化,在国内水土不服,无法满足我的一些需求. 比如实 ...

  8. PostGIS 结合Openlayers以及Geoserver实现最短路径分析(一)

    环境: Win10 ArcMap10.4(用于数据处理) postgresql9.4 postgis2.2.3 pgRouting2.3(postgresql插件) ##附上本文配套素材下载地址:ht ...

  9. Vue过渡动画运用transition

    vue的过渡动画,主要是transition标签的使用,配合css动画实现的.官方文档css过渡 通过点击事件来切换show的值来改变显示的文本,下面的css通过进入离开时的在匀速状态下xxs(秒)下 ...

  10. djanao请求生命周期

    djanao请求生命周期 浏览器发送请求到服务端 服务端的wsgi服务器接收到来自浏览器的请求, 对request做一些预处理, 把浏览器的请求信息(请求方式, 请求头, socket信息等)都封装在 ...