一个非常优秀的跨平台物联网开发常用的网络请求库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
往期精彩
整理了很久之前在码云/Github/CSDN上收藏的嵌入式产品级项目分享开源
觉得本次分享的文章对您有帮助,随手点[在看]
并转发分享,也是对我的支持。
以上是关于一个非常优秀的跨平台物联网开发常用的网络请求库libcurl的主要内容,如果未能解决你的问题,请参考以下文章