http服务端 mongoose常用api

我给你整理一份最常用、必须掌握的 Mongoose API 清单 ,全部结合你的 HTTP 服务端代码 来讲,一看就懂、直接能用

基于 Mongoose 服务端开发 ------ 核心 API 大全

1. 初始化管理器

cpp 复制代码
mg_mgr_init(&mgr_, nullptr);

作用:初始化 Mongoose 管理器,管理所有连接、事件。


2. 绑定端口 + 监听

cpp 复制代码
mg_bind(&mgr_, "0.0.0.0:8080", OnHttpWebsocketEvent);

作用:

  • 绑定 IP + 端口
  • 设置事件回调函数(收到请求、连接、断开都会走这里)

3. 设置 HTTP 协议

cpp 复制代码
mg_set_protocol_http_websocket(connection);

作用:让连接支持 HTTP + WebSocket 协议。


4. 事件轮询(必须调用!)

cpp 复制代码
mg_mgr_poll(&mgr_, 500);

作用:

  • 处理所有网络事件
  • 接收请求、发送数据、断开连接
  • 服务器主循环一定要写!

5. 释放管理器

cpp 复制代码
mg_mgr_free(&mgr_);

作用:关闭服务器,释放资源。


二、事件回调里常用的 API

6. 收到 HTTP 请求事件

cpp 复制代码
case MG_EV_HTTP_REQUEST:

作用:客户端发来 HTTP 请求时触发。


7. 解析 HTTP 请求

cpp 复制代码
http_message* req = (http_message*)event_data;

// 获取 URL
string url = string(req->uri.p, req->uri.len);

// 获取 Body
string body = string(req->body.p, req->body.len);

// 获取 Method
string method = string(req->method.p, req->method.len);

作用:解析客户端发来的 URL、请求体、请求方法(POST/GET)


8. 发送 HTTP 响应头

cpp 复制代码
mg_send_response_line(nc, 200, headers.c_str());

作用:发送 HTTP 状态行 + 响应头

例如:HTTP/1.1 200 OK


9. 分块发送数据(chunked)

cpp 复制代码
mg_send_http_chunk(nc, data.data(), data.size());

作用:发送响应体


10. 发送结束标记

cpp 复制代码
mg_send_http_chunk(nc, "", 0);

作用:告诉客户端数据发送完毕。


11. 广播事件(线程池完成后回传)

cpp 复制代码
mg_broadcast(&mgr_, on_work_complete, &result, sizeof(result));

作用:跨线程通知 Mongoose 发送数据。


12. 发送错误页面

cpp 复制代码
mg_http_send_error(nc, 404, "Not Found");

三、你的代码中用到的 Mongoose API 清单(对照看)

cpp 复制代码
mg_mgr_init
mg_bind
mg_set_protocol_http_websocket
mg_mgr_poll
mg_mgr_free

mg_send_response_line
mg_send_http_chunk
mg_http_send_error
mg_broadcast

这些就是写 HTTP 服务端 95% 会用到的 API!


四、我给你一个最简单的 Mongoose 服务端示例(5 行核心)

cpp 复制代码
void fn(struct mg_connection* c, int ev, void* d) {
    if (ev == MG_EV_HTTP_REQUEST) {
        mg_send_response_line(c, 200, "Content-Type: text/plain\r\n");
        mg_send_http_chunk(c, "hello world", 11);
        mg_send_http_chunk(c, "", 0);
    }
}

int main() {
    struct mg_mgr mgr;
    mg_mgr_init(&mgr, 0);
    mg_bind(&mgr, "8080", fn);
    while(1) mg_mgr_poll(&mgr, 1000);
}

终极总结(你只需要记住)

Mongoose 做的事:

  • 监听端口
  • 接收请求
  • 解析 HTTP
  • 发送响应
  • 管理连接

你的框架做的事:

  • 线程池
  • 路由匹配
  • 会话管理
  • 业务逻辑

需要我给你整理一份 Mongoose 事件类型大全 吗?比如:

  • MG_EV_ACCEPT
  • MG_EV_HTTP_REQUEST
  • MG_EV_CLOSE
  • MG_EV_SEND

这些你代码里都用到了!

相关推荐
那年窗外下的雪.9 小时前
第 02 天:Linux 权限、inode、目录项与链接
学习·http
那年窗外下的雪.10 小时前
AIDC 学习日志|第 27 天|EVPN 多归属收敛时间线与 Leaf2 接管验证
网络协议·学习·http·tcpdump
j7~11 小时前
【Linux】三十八.C++ 手写 HTTP 服务器:裸 socket + fork 多进程,从 HTTP 报文解析到浏览器打开网页
linux·网络·网络协议·学习·http·网络编程
小则又沐风a11 小时前
深入理解TCP协议----滑动窗口,流量控制
linux·网络协议·tcp
captain3761 天前
网络原理(9)-数据链路层
java·网络协议·java-ee
yi碗汤园1 天前
MQTT消息队列遥测传输协议
网络·网络协议·unity
花间相见1 天前
【后端开发|网络编程】—— 五种实时通信方案全解析:短轮询、长轮询、SSE、MQTT、WebSocket
后端·网络协议
AKA__Zas1 天前
跨网段主机的文件传输过程
java·网络·网络协议·学习方法
2501_916008891 天前
SSE 和 gRPC 流式接口如何抓包,调试 SSE 与 gRPC 流式接口
网络协议·计算机网络·网络安全·ios·adb·https·udp