zoukankan      html  css  js  c++  java
  • libcurl 概述(翻译)

    l名称

    libcurl 客户端 URL 传输

    描述

    这是一个如何使用libcurl进行C语言编程的简短概述。这里提到的每个功能都有特定的手册页。还有 libcurl-easy 手册页,libcurl-multi 手册页,libcurl-share 手册页和libcurl_tutorial 手册页,用于深入理解如何使用libcurl进行编程。

    有很多可用的绑定让你可以使用喜欢的语言访问libcurl,在其它地方寻找这些文档。

    libcurl有一个全局环境常量,使用libcurl时必须手动设置和维护。换句话说你需要在你的程序开始之前调用 curl_global_init,程序结束之后调用 curl_global_cleanup。详细描述参考 GLOBAL CONSTANTS

    如果编译的 libcurl 支持 SSL backends,调用 curl_global_init 前可调用 curl_global_sslset 来选择活动 SSL backend。

    要传输文件,你可以使用 curl_easy_init 创建一个简单句柄(easy handle)用于单个传输(在任一方向)。然后使用 curl_easy_setopt 在该句柄中设置所需的选项集。使用 curl_easy_setopt 设置的选项,将在每次重复使用此句柄时生效,直到您更改选项,或者使用 curl_easy_reset 重置它们。

    要真正的传输数据,你可以选择使用简单接口(easy interface)或多接口(multi interface)。

    简单接口是一个同步接口,使用该接口时调用 curl_easy_perform 来执行传输工作。当传输完成时,函数返回并继续后续流程。更多详细信息参考 libcurl-easy 手册页。

    多接口是一个异步接口,使用该接口时调用 curl_multi_perform 来执行传输工作。每次调用时只执行一小部分传输。如果在传输的过程中可以做其它事情,那就完美了。多接口允许您在 libcurl 上执行 select 操作,甚至可以使用单线程轻松地同时下载多个文件。更多详细信息参考 libcurl-multi 手册页。

    你可以实现多个简单接口共享某些数据,甚至它们使用在多个不同的线程中。这个神奇的功能是由共享接口(share interface)实现的,详细信息参考 libcurl-share 手册页。

    还有一系列其它有用的功能可供使用,包括:

    • curl_version_info()
      • 获取详细的libcurl(和其它使用的库)版本信息
    • curl_getdate()
      • 将日期字符串转换为time_t
    • curl_easy_getinfo()
      • 获取已执行传输的信息
    • curl_formadd()
      • 帮助构建HTTP表单POST
    • curl_formfree()
      • 释放使用curl_formadd构建的列表
    • curl_slist_append()
      • 建立一个链表
    • curl_slist_free_all();
      • 释放整个curl_slist

    与 LIBCURL 联系

    在类Unix的机器上,有一个名为 "curl-config" 的工具,当执行 'make install' 时,它会与curl其余的文件一起安装。

    附加curl-config使应用程序与libcurl之间的链接以及开发者学习如何使用libcurl变得简单。

    运行 'curl-config --libs' 获取你需要的(额外的)连接选项,链接到你已安装libcurl的特定版本。更多详细信息参考 curl-config 手册页。

    将libcurl作为其发行版的一部分提供的类Unix操作系统通常不提供curl-config工具,而只是为此目的在公共路径中安装库和头文件。

    许多Linux和类似系统使用pkg-config提供有关库的构建和链接选项,libcurl也支持这些选项。

    LIBCURL 符号名称

    libcurl接口中的所有公共函数都以'curl_'为前缀(带小写c)。您可以在库源代码中找到其他函数,但其​​他前缀表示函数是私有的,可能会在下一版本中更改,恕不另行通知。

    仅使用文档化的函数和功能!

    可移植性

    libcurl 在它编译和构建的任何平台上的工作方式完全相同。

    线程

    libcurl是线程安全的,但也有一些例外。有关更多信息,请参阅 libcurl-thread

    持久连接

    持久连接意味着如果条件合适,libcurl可以为多次传输重用相同的连接。

    libcurl将始终尝试使用持久连接。无论何时使用curl_easy_perform或curl_multi_perform等,libcurl都会尝试使用现有的连接进行传输,如果不存在,它将打开一个新的,可以在下一次调用curl_easy_perform或curl_multi_perform时重复使用。

    要允许libcurl充分利用持久连接,您应该尽可能使用相同的句柄传输多个文件。

    如果您使用简单接口,并且调用curl_easy_cleanup,则libcurl保存的所有可能打开的连接都将被关闭并被遗忘。

    未完待续...

  • 相关阅读:
    视频播放
    调用原生硬件 Api 实现照相机 拍照和相册选择 以及拍照上传
    获取设备信息 以及 获取地 理位置
    flutter_html 和 WebView 解析html 和 build.gradle源码
    flutter Dio()网络请求
    AlertDialog 、SimpleDialog、 showModalBottomSheet、showToast 自定义 Dialog
    前端小白页面开发注意事项及小工具(htmlcssjs)
    box-shadow 画叮当猫
    什么是冒泡排序?
    console.log
  • 原文地址:https://www.cnblogs.com/clxye/p/10063678.html
Copyright © 2011-2022 走看看