- cURL必知必会
- (瑞典)丹尼尔·斯坦伯格
- 667字
- 2020-08-29 00:45:12
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绑定。