-
简介
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
-
架构图
在操作系统环境中,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 通信。