libcurl网络协议库使用Demo

目录

1 libcurl简介

2 libcurl编译

3 使用步骤

4 函数说明

4.1 全局初始化函数 curl_global_init

4.2 全局释放函数 curl_global_cleanup

4.3 libcurl库版本 curl_version

 4.4 开启会话 curl_easy_init

4.5 结束会话 curl_easy_cleanup

4.6 设置传输选项 curl_easy_setopt

4.7 执行传输任务 curl_easy_perform

5 演示Demo

5.1 开发环境

5.2 示例代码

5.3 下载地址


1 libcurl简介

        libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap等协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。

        官网:https://curl.haxx.se/

2 libcurl编译

        Windows平台libcurl库的下载地址:curl for Windows

注意:下载的Windows库,只包含头文件和dll库,缺少lib文件。

        可用VS编译器自带工具命令行根据def文件和dll文件生成lib文件

        以“管理员身份”运行cmd,进行VS的安装路径,把def文件和dll文件放到VC\bin目录下,然后执行:

lib /machine:x64 /def:libcurl-x64.def         //生产64位lib文件libcurl-x64.lib
lib /machine:x86 /def:libcurl.def             //生产32位lib文件libcurl.lib

3 使用步骤

  1. 调用curl_global_init()初始化libcurl
  2. 调用curl_easy_init()函数得到CURL指针
  3. 根据curl_easy_setopt()设置传输选项,设置回调函数以完成用户特定任务
  4. 调用curl_easy_perform()函数执行传输任务
  5. 调用curl_easy_cleanup()释放内存
  6. 调用curl_global_cleanup()析构libcurl

        在整个过程中设置curl_easy_setopt()参数是最关键的,几乎所有的libcurl程序都要使用它。

        在基于libcurl的程序里,主要采用callback function(回调函数)的形式完成传输任务,用户在启动传输前设置好各类参数和回调函数,当满足条件时libcurl将调用用户的回调函数实现特定功能。

4 函数说明

4.1 全局初始化函数 curl_global_init

/*
    功能:全局初始化
    参数:flags - [in]   CURL_GLOBAL_ALL       //初始化所有的可能的调用。
                        CURL_GLOBAL_SSL       //初始化支持 安全套接字层。
                        CURL_GLOBAL_WIN32     //初始化win32套接字库。
                        CURL_GLOBAL_NOTHING   //没有额外的初始化。
    返回:0-成功,其他-失败
*/
CURLcode curl_global_init(long flags);

        这个函数只能用一次。如果这个函数在curl_easy_init函数调用时还没调用,它将由libcurl库自动调用,所以多线程下最好主动调用该函数以防止在线程中curl_easy_init时多次调用。

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

4.2 全局释放函数 curl_global_cleanup

/*
    功能:全局释放
    参数:
    返回:
*/
void curl_global_cleanup(void);

         在结束libcurl使用的时候,用来对curl_global_init做的工作清理。类似于close的函数。

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

4.3 libcurl库版本 curl_version

 /*
    功能:libcurl库版本
    参数:
    返回:libcurl库版本
*/
char *curl_version(void);

 4.4 开启会话 curl_easy_init

 /*
    功能:初始化CURL指针
    参数:
    返回:CURL指针
*/
CURL *curl_easy_init(void);

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

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

4.5 结束会话 curl_easy_cleanup

 /*
    功能:释放CURL指针
    参数:curl - [in] CURL指针
    返回:
*/
void curl_easy_cleanup(CURL *curl);

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

4.6 设置传输选项 curl_easy_setopt

 /*
    功能:设置传输选项
    参数:curl   - [in] CURL指针
         option - [in] 传输选项参数 
    返回:0-成功,其他-失败
*/
CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);

        这个函数最重要了。几乎所有的curl 程序都要频繁的使用它。它告诉curl库,程序将有如何的行为,比如要查看一个网页的html代码等。(这个函数有些像ioctl函数)

4.7 执行传输任务 curl_easy_perform

 /*
    功能:执行传输任务
    参数:curl   - [in] CURL指针
    返回:0-成功,其他-失败
*/
CURLcode curl_easy_perform(CURL *curl);

5 演示Demo

5.1 开发环境

  • curl-8.4.0_6
  • Visual Studio 2015
  • Windows 10 Pro x64

5.2 示例代码

  1. 调用curl_global_init()初始化libcurl
  2. 调用curl_easy_init()函数得到CURL指针
  3. 根据curl_easy_setopt()设置传输选项,设置回调函数以完成用户特定任务
  4. 调用curl_easy_perform()函数执行传输任务
  5. 调用curl_easy_cleanup()释放内存
  6. 调用curl_global_cleanup()析构libcurl
int main()
{
        // 调用curl_version,获取版本信息
        printf("%s\n\n",curl_version());

        // 调用curl_global_init 全局初始化
        curl_global_init(CURL_GLOBAL_ALL);

        // 调用curl_easy_init()函数得到 easy interface型指针
        CURL* client = curl_easy_init();
        
        // 调用curl_easy_setopt()设置传输选项(通过调用curl_easy_setopt这个函数来对指针进行各种配置,比如:请求的方式)
        curl_easy_setopt(client, CURLOPT_URL, "http://www.baidu.com");
        
        // 调用curl_easy_perform()函数进行访问请求
        curl_easy_perform(client);

        // 调用curl_easy_cleanup()释放内存
        curl_easy_cleanup(client);

        // 调用curl_global_cleanup 全局释放
        curl_global_cleanup();

    return 0;
}

5.3 下载地址

        开发环境:

  • Windows 10 pro x64
  • Visual Studio 2015
  • curl-8.4.0_6

        下载地址: libcurl网络协议库使用Demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值