项目简介
本项目是一个用C语言编写的高性能、低资源占用的Web服务器库,专为ESP设备设计。它解决了常见ESP Web服务器因大量缓冲导致的内存占用大、无法处理大文件上传以及阻塞其他功能等问题,能有效在低内存设备上运行。
项目的主要特性和功能
- (半)异步处理:内容发送虽为阻塞动作,但服务器将待发送块存储在列表中,每次循环发送固定量,每次循环阻塞时间固定;也支持使用ESP内部LWIP库实现全异步。
- 极小内存占用:服务器自身使用固定内存,默认是
#clients
*128字节
的缓存,加上不同的内部struct
,仅发送列表会分配动态内存。 - 支持多种请求参数:支持GET和POST参数,以及
multipart/form-data
和application/x-www-form-urlencoded
的POST编码类型。 - 多平台支持:支持ESP8266、ESP32、i386和amd64等平台。
- 灵活处理缓冲大小:能处理从逐字节到理论无限大的所有传入缓冲大小。
安装使用步骤
安装
Linux
从根文件夹复制此存储库后,执行以下命令: ```
./start
```
Arduino(针对ESP)
将webserver.cpp
放在项目的任何位置,并正确包含webserver.h
头文件。
使用
- 启动服务器:使用
webserver_start(int port, webserver_cb_t *callback)
函数在指定端口启动Web服务器,事件触发时将调用用户定义的回调函数。 - 事件处理:定义
(webserver_cb_t)(struct webserver_t *client, void *data)
函数处理事件,返回0表示一切正常,返回 -1 表示关闭与客户端的连接。 - 循环处理:非异步模式下,在主循环中调用
webserver_loop(void)
函数。 - 发送内容:使用
webserver_send_content
和webserver_send_content_P
函数将缓冲区排队等待发送;使用webserver_send
函数构造发送头。 - 断开连接:使用
webserver_client_stop(struct webserver_t *client)
函数断开客户端连接。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】