前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个非常优秀的跨平台物联网开发常用的网络请求库libcurl

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

作者头像
杨源鑫
发布2022-03-24 08:57:48
1K0
发布2022-03-24 08:57:48
举报
文章被收录于专栏:嵌入式开发圈

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

下载链接如下:

代码语言:javascript
复制
https://curl.se/download.html
2.2、在Linux下进行配置、编译和安装

(1)配置libcurl

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

代码语言:javascript
复制
./configure --help

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

代码语言:javascript
复制
./configure --with-openssl

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

(2)编译 & 安装

代码语言:javascript
复制
make & make install
2.3、编写libcurl样例

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

代码语言:javascript
复制
https://curl.se/libcurl/c/example.html

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

代码语言:javascript
复制
#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;
}

编译及执行方法:

代码语言:javascript
复制
gcc http_get.c -o http_get -lcurl

从URL下载得到的文件:

3、引用 & 参考文献
代码语言:javascript
复制
(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
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 嵌入式应用研究院 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 由于接下来要更多的和物联网云平台打交道。我考虑的一种实现方式是将业务代码和网络解析处理代码分离的模式。因此,有必要学习以下这一个优秀的网络请求库-libcurl。
    • 1、libcurl简介
      • 2、libcurl的使用
        • 2.1、下载最新版本的libcurl
        • 2.2、在Linux下进行配置、编译和安装
        • 2.3、编写libcurl样例
      • 3、引用 & 参考文献
      相关产品与服务
      SymantecSSL 证书
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档