ISP基本原理和实现(题外话之mongoose)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

最近正好有一个需求,需要在arm linux板子上起一个web server。本着轻巧的原则,在github上面找了一下,发现了mongoose这个软件。软件本身很小,就一个h文件,一个c文件,完全可以拿过来处理一下。如果只是配置类的处理,或者是stm32 mcu之类的软件,那么也可以使用这类库。

1、代码的地址

复制代码
https://github.com/cesanta/mongoose

2、准备main.cpp

本来mongoose.c和mongoose.h是一个库,没有main函数。所以需要自己准备一个main.cpp文件,这样就可以编译起来了,

复制代码
#include "mongoose.h"   // To build, run: cc main.c mongoose.c

// HTTP server event handler function
void ev_handler(struct mg_connection *c, int ev, void *ev_data) {
  if (ev == MG_EV_HTTP_MSG) {
    struct mg_http_message *hm = (struct mg_http_message *) ev_data;
    struct mg_http_serve_opts opts = { .root_dir = "./" };
    mg_http_serve_dir(c, hm, &opts);
  }
}

int main(void) {
  struct mg_mgr mgr;  // Declare event manager
  mg_mgr_init(&mgr);  // Initialise event manager
  mg_http_listen(&mgr, "http://0.0.0.0:8000", ev_handler, NULL);  // Setup listener
  for (;;) {          // Run an infinite event loop
    mg_mgr_poll(&mgr, 1000);
  }
  return 0;
}

3、编译方法

只需要mongoose.cpp和main.cpp,这样就可以编译起来了,

复制代码
 g++ main.cpp mongoose.c -g -o main

4、可执行文件执行

看到了main程序被生成之后,下面就可以开始执行了,如果输入./main,就可以看到这样的log内容,

复制代码
feixiaoxing@raspberrypi:~/Desktop/mongoose/mongoose-master $ ./main
5a5a09 3 mongoose.c:4381:               MG_IO_SIZE: 16384, TLS: none
5a5a09 3 mongoose.c:4298:               1 4 http://0.0.0.0:8000

5、测试web server

看到web server之后,如果pc和板子是用网线直连的话,就可以直接打开浏览器测试。比如,这样输入http地址,http://192.168.0.97:8000/

6、复杂的测试用例

**如果想做一点复杂的功能,又不想自己开发,那么可以直接参考tutorials下面的demo案例。**除了mongoose.c之外,还会借用src/下面一部分代码,具体case也会自己写代码,这样构成一个完整的功能,比如tutorials/webui/webui-rest应用。

tutorials/http/file-upload-html-form下面的文件上传窗口,是这样的,

7、后续的内容

至此mongoose已经用起来了,后面不管是做web,还是添加api接口,都是比较方便的。

相关推荐
CPUOS20104 天前
嵌入式C语言高级编程之接口隔离原则
c语言·网络·接口隔离原则
实在太懒于是不想取名4 天前
STM32N6的开发日记(6):用ISP中间件点亮IMX335相机的专业画质
stm32·嵌入式硬件·接口隔离原则
我不是懒洋洋5 天前
自动化构建工具:make与Makefile从入门到精通
简单工厂模式·接口隔离原则·依赖倒置原则·合成复用原则·单一职责原则
一个平凡而乐于分享的小比特9 天前
单片机烧录方式终极指南:ICP、ISP、IAP 深度对比与实战解析
单片机·mongodb·接口隔离原则
beyond谚语18 天前
接口&抽象类
c#·接口隔离原则·抽象类
WarrenMondeville1 个月前
4.Unity面向对象-接口隔离原则
java·unity·接口隔离原则
GGbond--1 个月前
2026年最佳静态ISP代理:最佳提供商、功能和测评
java·服务器·人工智能·深度学习·接口隔离原则
Kaede62 个月前
IDC和ISP分别是什么意思,有什么区别?
网络·接口隔离原则
大熊背3 个月前
工业级 ISP 常用压缩算--自适应位宽 (Adaptive Bit-depth)具体原理
接口隔离原则
跨境小技3 个月前
静态住宅ISP代理:企业如何选择住宅代理IP?2026深度解析指南
网络·tcp/ip·接口隔离原则