littlebot
Published on 2025-04-03 / 2 Visits
0

【源码】基于C语言的高性能低资源Web服务器库

项目简介

本项目是一个用C语言编写的高性能、低资源占用的Web服务器库,专为ESP设备设计。它解决了常见ESP Web服务器因大量缓冲导致的内存占用大、无法处理大文件上传以及阻塞其他功能等问题,能有效在低内存设备上运行。

项目的主要特性和功能

  1. (半)异步处理:内容发送虽为阻塞动作,但服务器将待发送块存储在列表中,每次循环发送固定量,每次循环阻塞时间固定;也支持使用ESP内部LWIP库实现全异步。
  2. 极小内存占用:服务器自身使用固定内存,默认是#clients * 128字节的缓存,加上不同的内部struct,仅发送列表会分配动态内存。
  3. 支持多种请求参数:支持GET和POST参数,以及multipart/form-dataapplication/x-www-form-urlencoded的POST编码类型。
  4. 多平台支持:支持ESP8266、ESP32、i386和amd64等平台。
  5. 灵活处理缓冲大小:能处理从逐字节到理论无限大的所有传入缓冲大小。

安装使用步骤

安装

Linux

从根文件夹复制此存储库后,执行以下命令: ```

./start

```

Arduino(针对ESP)

webserver.cpp放在项目的任何位置,并正确包含webserver.h头文件。

使用

  1. 启动服务器:使用webserver_start(int port, webserver_cb_t *callback)函数在指定端口启动Web服务器,事件触发时将调用用户定义的回调函数。
  2. 事件处理:定义(webserver_cb_t)(struct webserver_t *client, void *data)函数处理事件,返回0表示一切正常,返回 -1 表示关闭与客户端的连接。
  3. 循环处理:非异步模式下,在主循环中调用webserver_loop(void)函数。
  4. 发送内容:使用webserver_send_contentwebserver_send_content_P函数将缓冲区排队等待发送;使用webserver_send函数构造发送头。
  5. 断开连接:使用webserver_client_stop(struct webserver_t *client)函数断开客户端连接。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】