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

2023-12-17 21:30:46
  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#

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 通信。

文章来源:https://blog.csdn.net/zhulong1984/article/details/135049623
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。