1.3 curl可以做什么

cURL项目的主要目的和侧重点围绕着两个产品展开:

❑ 命令行工具curl;

❑ 提供C API的libcurl库。

这个工具和库都基于网络协议,为指定的URL资源执行网络传输。

curl关心所有与网络协议传输相关的东西,那些与此无关的就留给其他项目和产品去操心吧。

curl和libcurl试图避免直接处理被传输的数据。例如,它们对HTML或通过HTTP传输的内容一无所知,只知道如何通过HTTP传输这些数据。

这两个产品不仅用于驱动互联网世界的数百万个脚本和应用程序,而且广泛应用于服务器测试、协议探测和尝试新事物。

libcurl库可以用于各种需要网络传输的嵌入式设备:车载信息娱乐系统、电视机、蓝光播放器、机顶盒、打印机、路由器、游戏系统等。

1.3.1 命令行工具curl

curl通过命令行运行。我只考虑使用可以将数据输出到stdout(终端)的工具。我一直信奉Unix哲学中的“一切皆管道”。像cat或其他Unix工具一样,curl将数据发送到stdout,以便与其他工具一起实现你想要的效果。所以,curl提供的那些支持从文件读取数据或将数据写入文件的选项,也支持将数据写到stdout或从stdin读取数据。

贯彻Unix命令行工具的一贯风格,curl也可支持多个URL。

curl可以被完美地应用在脚本或自动化程序中。它不提供GUI或UI,只支持输入文本和输出文本。

1.3.2 libcurl库

2000年,curl的核心引擎被抽离成一个库,同年8月,libcurl 7.1发布,其中包含了所有沿用至今的概念。从那时起,curl就成了一个基于libcurl构建命令行工具的逻辑层。

想要在软件、平台、架构中添加客户端文件传输功能的人都可以使用libcurl,这也是libcurl的设计目标。libcurl的许可协议非常自由,避免给人们带来任何麻烦。

libcurl是用传统的C语言开发的,不过也有使用其他语言开发的版本,人们为其他语言创建了相应的libcurl绑定。