非常好用的C++跨平台网络通信Mongoose,随笔记录

  1. 简介

        Mongoose 是一个 C/C++ 网络库。它实现了事件驱动, TCP、UDP、HTTP、WebSocket、MQTT 的非阻塞 API。它连接设备 并将它们带到网上。自 2004 年以来,一些开源和商业 产品已经利用了它。它甚至运行在 国际空间站! Mongoose 使嵌入式网络编程变得快速, 坚固且简单。

        Mongoose 适用于 Windows、Linux、Mac 和许多嵌入式架构 如STM32、NXP、TI、ESP32等。它可以在现有的基础上运行 操作系统和 TCP/IP 堆栈(例如 FreeRTOS 和 lwIP)以及裸机上的操作系统和 TCP/IP 堆栈, 利用 Mongoose 的内置 TCP/IP 堆栈和网络驱动程序。

        参考网址:Mongoose :: Documentation

        参考代码:https://github.com/cesanta/mongoose/tree/master

  1. 架构图

        在操作系统环境中,Mongoose 使用 BSD 提供的套接字 API 通过操作系统的 TCP/IP 堆栈:

        在嵌入式裸机环境中,Mongoose可以利用自己内置的 与网络驱动程序堆栈 - 即它可以直接在硬件之上运行:

 

教程和示例#

开发环境#

  • 构建工具 - 设置开发环境以构建和运行 Mongoose 库示例以及开发新应用程序的指南。

网页用户界面#

  • 设备仪表板 - 本教程展示了如何构建设备仪表板的示例,这对于无头设备非常有用。
  • REST 基础知识 - 本教程将向您展示如何实现和使用基于 REST 的用户界面 (UI) 的基础知识。
  • 纯 JavaScript UI - 本教程将向您展示如何通过基于 REST 的后端实现基于 JavaScript 的纯用户界面 (UI)。
  • Preact UI - 本教程将向您展示如何通过基于 REST 的后端为用户界面 (UI) 实现基于 Preact 的前端。我们将在这里重点介绍 Preact UI 前端的基础知识。
  • 用户身份验证 - 本教程将向您展示如何通过基于 REST 的后端使用基于 Preact 的用户界面 (UI) 实现会话登录。我们将在这里重点介绍登录过程的基础知识。
  • 数据推送 - 本教程将向您展示如何将数据从设备推送到浏览器上运行的基于 JavaScript 的用户界面 (UI);使用 WebSocket 或基于 REST 的 API。
  • 嵌入式文件系统 - 本教程展示了如何将所有 Web 文件嵌入到链接到服务器二进制文件的打包文件系统中的示例;形成只读文件系统。
  • MQTT 仪表板 - 本教程展示了如何构建远程设备仪表板的示例,这对于处理远程设备非常有用。

HTTP#

  • HTTP 服务器 - 基本 HTTP 服务器教程将向您展示如何配置 HTTP 服务器,同时您可以熟悉事件管理器和服务器 API。
  • HTTP 客户端 - 本教程将向您展示如何使用 Mongoose 库实现 HTTP 客户端。
  • HTTP 代理客户端 - 本教程将向您展示如何在必须通过代理完成连接的地方使用 Mongoose 作为 HTTP 客户端。
  • HTTP 反向代理 - 本教程将向您展示如何使用 Mongoose 实现反向代理。
  • 文件上传 - 本教程将向您展示如何将文件上传到 Mongoose Web 服务器。
  • 巨大的响应 - 本教程将向您展示如何发送大于可用缓冲区内存的大量数据。
  • 视频流 - 本教程将向您展示如何以一系列 MJPEG 帧的形式发送视频流。

Websocket#

  • Websocket 服务器 - 本教程演示如何使用 Mongoose 库来实现 Websocket 服务器。
  • Websocket 客户端 - 本教程演示如何使用 Mongoose 库来实现 Websocket 客户端。
  • 基于 WS 的 JSON-RPC - 本教程演示如何使用 Mongoose 库通过 WebSocket 实现 JSON-RPC 功能。

MQTT#

  • MQTT 客户端 - 本教程演示如何使用 Mongoose 库来实现 MQTT 客户端。
  • MQTT 服务器 - 本教程演示如何使用 Mongoose 库来实现简单的 MQTT 3.1.1 服务器。
  • 基于 WS 客户端的 MQTT - 本教程演示如何使用 Mongoose 库来实现通过 WebSocket 连接到代理的 MQTT 客户端。
  • AWS IoT - 本教程演示如何使用 Mongoose Library 与 AWS IoT 服务进行通信。
  • MQTT 仪表板 - 本教程展示如何构建 MQTT 控制的无头设备的示例。

SSL/TLS#

  • SSL/TLS - 在本教程中,我们将介绍如何为服务器和客户端启用 SSL/TLS。

固件更新#

  • 固件更新 - 本教程将向您展示如何使用 Mongoose 库函数来实现固件更新。

其他#

  • 错误处理 - 如果连接由于某种原因失败,您可以在本部分找到如何操作的答案。
  • 多线程 - 本教程将向您展示如何在多线程环境中使用 Mongoose。
  • SOCKS5 服务器 - 本教程将向您展示如何使用 Mongoose 库函数来实现基于 TCP 的服务器,在本例中是 SOCKS5 代理服务器。
  • 计时器 - 本教程将指导您配置计时器回调,这是一种执行某些定期操作的机制。
  • TCP 客户端和服务器 - 这个简单的教程演示了如何使用 Mongoose 库来实现 TCP 客户端和服务器,甚至通过 TLS。
  • UART 桥 - 本教程展示如何通过网络发送 UART 数据的示例。
  • SMTP 客户端 - 这个简单的教程演示了如何使用 Mongoose Library 通过 TLS 实现 SMTP 客户端。
  • Mongoose 内置 TCP/IP 堆栈的驱动程序 - 编写您自己的驱动程序,将我们的通用 CMSIS 驱动程序移植到您的 ARM 设备

UDP#

  • 强制 DNS 服务器 - 本教程演示如何使用 Mongoose 库来实现强制 DNS 门户。设备配置通常需要它。
  • SNTP 时间同步 - 本教程将向您展示如何与远程 SNTP 服务器同步时间。
  • SSDP 搜索 - 本教程演示如何通过执行 SSDP 搜索来使用 Mongoose 库进行 UDP 通信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/284103.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.1 数据操作

声明: 注意!!! 本博客仅用于本人学习笔记作用,所有资料来源都来自于李沐大神,博客中图片为沐神书上的图片。如有侵权,请联系本人删除,谢谢。 资料来源:https://zh-v2.d2…

亚马逊云科技re:Invent推出生成式AI技术堆栈及关键服务和工具

亚马逊云科技于29日推出“生成式AI技术堆栈”后,又在30日的re:Invent 2023大会上宣布了一系列支持这一全新堆栈的关键服务和工具。 亚马逊云科技数据和人工智能副总裁Swami Sivasubramanian在主题演讲中,将生成式人工智能与“超新星爆炸”进行了比较&am…

IT和业务部门都想要的数据摆渡产品是这样的!

企业只要进行了网络隔离,就必然会需要数据摆渡相关产品,不管是免费的也好,专业收费的也好,总之都是需要将数据流转起来进行使用。 传统的数据摆渡产品也不少,比如FTP,甚至是U盘拷贝,在功能上来说…

第二证券:市场结构性行情延续 关注科技成长等板块

上星期A股连续震动,小盘结构性行情连续。国内方针宽松新兴产业催化持续海外宽松生意升温的环境仍然有利于偏生长和小盘风格,主张注重同步受益于产业催化持续和方针活跃发力的TMT、医药、轿车等科技生长板块,别的,高股息板块在改改…

Redis 执行性能测试

Redis 性能测试是通过同时执行多个命令实现的。 语法 redis 性能测试的基本命令如下: redis-benchmark [option] [option value] 注意:该命令是在 redis 的目录下执行的,而不是 redis 客户端的内部指令。 实例 以下实例同时执行 10000 个…

华为黑科技充电车要来了 | 百能云芯

华为再度掀起黑科技风潮,新一款创新力之作——华为充电车(或被戏称为行动充电机器人)近日亮相于国家知识产权局的中国专利公布公告中。这款充电车外观设计专利已经获得授权,勾勒出一个圆润流畅、被寄予“可爱”期待的外观。在这款…

使用oled虚拟人主播,如何搭建场景

使用OLED虚拟人主播搭建场景,可以按照以下步骤进行: 确定场景需求:首先,明确需要搭建的场景类型,例如直播间、新闻演播室、产品发布会等。根据场景需求,确定所需的功能和设备。 选择合适的OLED虚拟人主播&a…

猜数字小游戏(猜错了会关机推荐让室友帮你玩)

前言 今天来带大家写一个简易的猜数字小游戏,如果连着猜错n次(自己设定)就会导致电脑关机,还在等什么呢?赶紧学会咯,发给你的室友让他帮你玩吧! 正文 随机数的生成 首先我们还要学会如何创建随…

Linux部署Nacos注册中心结合内网穿透实现远程访问UI管理界面

文章目录 1. Docker 运行Nacos2. 本地访问Nacos3. Linux安装Cpolar4. 配置Nacos UI界面公网地址5. 远程访问 Nacos UI界面6. 固定Nacos UI界面公网地址7. 固定地址访问Plik8. 结语 Nacos是阿里开放的一款中间件,也是一款服务注册中心,它主要提供三种功能&#xff1a…

若依 ruoyi-vue3 集成aj-captcha实现滑块、文字点选验证码

目录 0. 前言0.1 说明 1. 后端部分1.1 添加依赖1.2. 修改 application.yml1.3. 新增 CaptchaRedisService 类1.4. 添加必须文件1.5. 移除不需要的类1.6. 修改登录方法1.7. 新增验证码开关获取接口1.8. 允许匿名访问 2. 前端部分(Vue3)2.1. 新增依赖 cryp…

千梦网创:唯有皮条能够拯救皮条客

我常说,赚钱就是服侍好双爹。 对于目标用户的定位,其实没有任何好坏之分也没有任何轻松简单之分,纯粹看个人意愿。 收一群小白,每天要做的就是重复回答大概率经常回复的问题。 收一群大佬,每天要做的就是准备回答多…

HBuilder X将Vue打包APP返回上一页退出问题、清除缓存页面历史防止返回登录页(上一页)、以及状态栏颜色切换

目录 一、返回上一页退出问题 二、清除缓存页面历史防止返回上一页 三、状态栏颜色切换 一、返回上一页退出问题 1.首先重新认识一下vue的页面跳转,这里我只说常用到的两个 goSkip(){//直接跳转this.$router.push(/test);this.$router.replace(/test);//带参数跳…