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

这些你代码里都用到了!

相关推荐
code_li20 小时前
HTTPS免费证书配置指南
网络协议·http·https
以太浮标1 天前
华为eNSP模拟器综合实验之- 主机没有配置缺省网关时,通过路由式Proxy ARP实现通信(arp-proxy enable)
运维·网络·网络协议·华为·智能路由器·信息与通信
时空自由民.1 天前
蓝牙协议栈知识和网络协议栈知识对比
网络·arm开发·网络协议
醉颜凉1 天前
网络协议基础必学:ARP 和 RARP 是什么?有什么区别?原理+流程图+对比详解
网络·网络协议·流程图
杜子不疼.1 天前
无需公网 IP!Grafana+内网穿透轻松实现数据看板远程访问
网络协议·tcp/ip·grafana
tie12341 天前
HTTP相关
网络·网络协议·http
运维老郭1 天前
TCP/IP协议栈排坑指南:3个高频连接故障与tcpdump精准定位
网络协议·tcp/ip·tcpdump
埃伊蟹黄面1 天前
应用层HTTP协议
linux·网络·网络协议·http
2501_915921431 天前
穿越HTTPS迷雾:Wireshark中的TLS抓包秘诀与文件合并方法
网络协议·ios·小程序·https·uni-app·wireshark·iphone
PinTrust SSL证书1 天前
Sectigo(Comodo)企业型OV通配符SSL
网络·网络协议·网络安全·小程序·https·ssl