mongoose V7.4核心篇之HTTP特定协议回调函数(六)

本文详细介绍了mongoose框架中用于处理HTTP协议的回调函数http_cb及其工作原理。http_cb函数在创建监听套接字时被初始化,并负责解析客户端的HTTP报文,包括请求行、首部和实体。解析后的数据存储在structmg_http_message结构体中,该结构体包含了HTTP请求/响应的完整信息,如方法、URI、首部、正文等关键部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 特殊协议回调函数http_cb

《mongoose V7.4核心篇之mgr管理用户请求套接字(五)》一文的2.4小节和《mongoose V7.4源码剖析之读取客户端数据(八)》一文的3.1小节中,有提到过http_cb()函数。它是mongoose服务为了实现HTTP(应用层)协议而在源码中实现的一个特殊回调函数,它在创建mongoose监听套接字以及其关联变量c时候(更多细节请阅读《mongoose V7.4之创建监听端口 (二)》一文的第3节内容),初始化其成员pfn,即c->pfn = http_cb()

struct mg_connection *mg_http_listen(struct mg_mgr *mgr, const char *url,
                                     mg_event_handler_t fn, void *fn_data) {
  		struct mg_connection *c = mg_listen(mgr, url, fn, fn_data);
  
  		// 初始化监听套接字fd关联的变量c中的成员pfn. 
  		if (c != NULL) c->pfn = http_cb;
  return c;
}

函数http_cb()函数负责的主要任务是解析客户端下发的HTTP报文,包括其请求行首部实体3个主要部分(更多关于HTTP报文格式的知识请阅读《HTTP协议之报文格式》)。

之后便http_cb()回调函数便将所有解析的数据存储在struct mg_http_message数据类型所表示的变量中,这个变量能存储一个完整的HTTP请求/响应报文的所有数据内容信息。

2. 详聊 struct mg_http_message


当你熟悉了HTTP协议的规则以及报文格式表示之后,

struct mg_http_message {
  struct mg_str method, uri, query, proto;             // Request/response line
  struct mg_http_header headers[MG_MAX_HTTP_HEADERS];  // Headers
  struct mg_str body;                                  // Body
  struct mg_str head;                                  // Request + headers
  struct mg_str chunk;    // Chunk for chunked encoding,  or partial body
  struct mg_str message;  // Request + headers + body
};





3.
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

内核之道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值