这里就简介一下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通讯-一些主要的函数的更多相关文章

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

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

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

    http://www.cnblogs.com/moodlxs/archive/2012/10/15/2724318.html C++ 用libcurl库进行http通讯网络编程 目录索引: 一.Lib ...

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

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

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

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

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

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

  6. libcurl库进行http通讯-开篇

    从今天開始介绍一些经常使用的库. 首先就来写一写关于libcurl库. libcurl主要功能就是用不同的协议连接和沟通不同的server~也就是相当封装了的sockPHP 支持libcurl(同意你 ...

  7. 最全的libcurl库资源整理

    C++ 用libcurl库进行http 网络通讯编程 百度登陆协议分析!!!用libcurl来模拟百度登陆 C++使用libcurl做HttpClient 使用libcurl库进行HTTP的下载 li ...

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

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

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

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

随机推荐

  1. python网络爬虫。第一次测试-有道翻译

    2018-03-0720:53:56 成功的效果如下 代码备份 # -*- coding: UTF-8 -*- from urllib import request from urllib impor ...

  2. 北大ACM(POJ1020-Anniversary Cake)

    Question:http://poj.org/problem?id=1020 问题点:DFS. Memory: 260K Time: 47MS Language: C++ Result: Accep ...

  3. python学习笔记(2)——练习小程序之 " input " 隐藏陷阱

    练习小程序之 ----------" input " 隐藏陷阱 age=input('please enter your age:') if age>=18: print(' ...

  4. Linux系统的启动流程

    Linux系统的启动流程: 1.通电(通常按下电源键,开始通电) 2.加载BIOS (通常看到显示器提示按F2进入主板) 3.读取MBR (MBR硬盘的入口地址,用来装载引导) 4.进入引导 (通常有 ...

  5. RabbitMQ系列(二)--基础组件

    声明:对于RabbitMQ的学习基于某课网相关视频和<RabbitMQ实战指南>一书,后续关于RabbitMQ的博客都是基于二者 一.什么是RabbitMQ RabbitMQ是开源代理和队 ...

  6. 微服务网关从零搭建——(七)更改存储方式为oracle

    资源准备: 下载开源项目 新建oracle表: -- ---------------------------- -- Table structure for OcelotGlobalConfigura ...

  7. Libreswan软件的密钥协商协议IKEv1主模式实现分析

    Libreswan软件的密钥协商协议IKEv1主模式实现分析 1 协商过程 IKEv1(互联网密钥交换协议第一版)是IPsec VPN隧道协商使用的标准密钥协商协议,其协商过程如下图所示. 总共来回交 ...

  8. 阿里云安装nodejs

    cd进入root目录下: cd /root 下载node.js安装包 wget https://nodejs.org/dist/v8.11.2/node-v8.11.2-linux-x64.tar.x ...

  9. xfce 设在分辨率1920 1080

    #自定义cvt 1920 1080 #查看系统显示器名称xrandr #设置分辨率xrandr --newmode "1920x1080_60.00" 173.00 1920 20 ...

  10. 09.C语言:预处理(宏定义)、字节序、地址对齐

    一.预处理 预处理 gcc -E Hello.c -o hello.i 编译 gcc -S hello.i -o hello.s 汇编 gcc -c hello.s -o hello.o 链接 gcc ...