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

Posted Engineer-Bruce_Yang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个非常优秀的跨平台物联网开发常用的网络请求库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

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

(1)配置libcurl

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

./configure --help

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

./configure --with-openssl

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

(2)编译 & 安装

make & make install

2.3、编写libcurl样例

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

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

以下是我根据案例编写的一个从云端下载文件的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

从URL下载得到的文件:

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上收藏的嵌入式产品级项目分享开源

觉得本次分享的文章对您有帮助,随手点[在看]并转发分享,也是对我的支持。

以上是关于一个非常优秀的跨平台物联网开发常用的网络请求库libcurl的主要内容,如果未能解决你的问题,请参考以下文章

物联网云平台的优势

Python模拟智能开关设备接入阿里云物联网平台

物联网云平台的远程管理

物联网云平台的远程管理

物联网架构演进和微信智能设备平台开发

以阿里IoT开发物联网和应用平台