一个非常优秀的跨平台物联网开发常用的网络请求库libcurl

简介: 一个非常优秀的跨平台物联网开发常用的网络请求库libcurl

由于接下来要更多的和物联网云平台打交道。我考虑的一种实现方式是将业务代码和网络解析处理代码分离的模式。因此,有必要学习以下这一个优秀的网络请求库-libcurl。

1、libcurl简介

libcurl 是一个免费且易于使用的客户端 URL 传输库, 支持DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET和TFTP。libcurl 支持 SSL 证书、HTTP POST、HTTP PUT、FTP 上传、基于 HTTP 表单的上传、代理、HTTP/3、Cookie、用户/密码认证 (Basic, Digest, NTLM, Negotiate, Kerberos), 文件传输恢复、http隧道代理等等!


libcurl兼容许多平台, 包括Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX, IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOs, Mac OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS 等等。


libcurl 是免费的、线程安全的、IPv6 兼容的、功能丰富的、支持良好的、快速的、完整的文档并且已经被许多知名的、大的和成功的公司使用。

2、libcurl的使用

2.1、下载最新版本的libcurl

下载链接如下:

https://curl.se/download.html

640.png

640.png

2.2、在Linux下进行配置、编译和安装

(1)配置libcurl


怎么配置的话可以执行帮助指令查看配置选项:

./configure --help

640.png

libcurl的配置参数非常丰富,我们也可以将它进行交叉编译,在开发板上进行使用,为了简单能够测试,我的配置参数如下:

./configure --with-openssl

640.png

配置完以后,我们可以看到这里面有哪些功能开启,哪些功能没有开启。

(2)编译 & 安装

make & make install

640.png

2.3、编写libcurl样例

在libcurl官网上提供了大量的案例,在编写程序的过程中可以进行借鉴:

https://curl.se/libcurl/c/example.html

640.png

以下是我根据案例编写的一个从云端下载文件的demo:

#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
#include <unistd.h>
#include "http-get.h"
int main(int argc, char *argv[])
{
 if(argc != 3)
 {
  printf("usage: Less than 3 parameters\n"); 
  printf("first parameters is url,second parameters is file name...\n");
  return -1 ;
 }
    int res = http_get_file(argv[1],argv[2]);
    if(res != 0)
 {
  printf("file donwload fair!\n");
  return -2 ;
 }
    return 0;
}

编译及执行方法:

gcc http_get.c -o http_get -lcurl

640.png

从URL下载得到的文件:

640.png

640.png

3、引用 & 参考文献

(N.d.). Retrieved from https://curl.se/libcurl/c/example.html
(N.d.). Retrieved from https://everything.curl.dev/libcurl
(N.d.). Retrieved from https://www.jianshu.com/p/c19a3f34b033

往期精彩

如何优雅地打印 HEX 数据?


让传感器数据更直观之LCD曲线显示


项目资源太紧张了,如何根据map信息进行功能裁剪和优化?


整理了很久之前在码云/Github/CSDN上收藏的嵌入式产品级项目分享开源

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
3天前
|
前端开发 网络安全
【XSS平台】使用,网络安全开发必学
【XSS平台】使用,网络安全开发必学
|
5天前
|
监控 物联网
LabVIEW开发基于物联网的多功能功率分析仪
LabVIEW开发基于物联网的多功能功率分析仪
11 2
|
5天前
|
监控 网络安全
LabVIEW开发干扰对无线网络基础设施进行隐蔽影响测试
LabVIEW开发干扰对无线网络基础设施进行隐蔽影响测试
17 0
|
5天前
|
传感器 机器学习/深度学习 算法
LabVIEW开发工业物联网状态监测
LabVIEW开发工业物联网状态监测
12 2
|
5天前
|
机器学习/深度学习 传感器 算法
LabVIEW开发基于神经网络的自动汽车制动系统
LabVIEW开发基于神经网络的自动汽车制动系统
|
5天前
|
JSON 网络协议 调度
LabVIEW开发TCP网络通讯程序4
LabVIEW开发TCP网络通讯程序4
10 0
|
5天前
|
XML JSON 网络协议
LabVIEW开发TCP网络通讯程序3
LabVIEW开发TCP网络通讯程序3
|
5天前
|
网络协议 测试技术
LabVIEW开发TCP网络通讯程序2
LabVIEW开发TCP网络通讯程序2
13 2
|
5天前
|
网络协议
LabVIEW开发TCP网络通讯程序1
LabVIEW开发TCP网络通讯程序1
12 1
|
5天前
|
传感器 存储 物联网
【C 言专栏】基于 C 语言的物联网开发
【5月更文挑战第6天】C 语言在物联网发展中扮演关键角色,适用于开发嵌入式系统、通信协议及云平台后端服务。其高效、灵活、可移植的特性适应资源有限的环境,确保设备兼容性。尽管开发挑战较大,如代码可读性,但借助辅助工具可改善。随着物联网技术进步,C 语言将持续发挥重要作用,塑造智能未来。
【C 言专栏】基于 C 语言的物联网开发