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

这些你代码里都用到了!

相关推荐
想学好C++的oMen12 小时前
socket编程TCP
linux·网络·网络协议·tcp/ip
GitLqr1 天前
别再盲目复制了:彻底搞懂 CORS 的本质与那些“神坑”
安全·http·面试
IPdodo_1 天前
Codex 一直显示 Thinking 怎么办?区分任务运行、界面卡住与会话恢复
http·网络调试
2401_873479401 天前
SOC告警日志中IP归属不明怎么办?部署IP离线库三步提升响应效率
网络·网络协议·tcp/ip
Kina_C1 天前
Apache HTTP Server 安装、配置与高级功能详解
linux·http·apache
想学好C++的oMen1 天前
socket编程UDP
网络协议·udp
游戏开发爱好者81 天前
iOS开发IDE有哪些 Xcode 和 快蝎 轻量替代方案
ide·vscode·ios·个人开发·xcode·swift·敏捷流程
chexus1 天前
21. 深入 Nginx HTTP 缓存源码:CDN功能
nginx·http·缓存
GitLqr2 天前
玩转 WebSocket:从原理到 Flutter 实战
websocket·网络协议·flutter
微硬创新2 天前
耐达讯自动化 CC-Link IE 转 PROFINET网关在污水厂智能化升级实战
人工智能·物联网·网络协议·自动化·信息与通信