mongoose源码分析系列一

本文主要探讨了mongoose服务器的使用过程,包括mg_create_server函数的实现以及mg_socketpair函数的详细步骤。首先,通过socket创建LoopBack地址的Socket,接着进行绑定、监听,然后获取Socket名字。接着,创建两个新的socket,sp[0]用于connect到LoopBack,sp[1]由accept函数生成。最后,设置sp[0]和sp[1]在执行关闭时关闭。

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

注1:选择5.1版本进行分析是因为我参与的项目中使用的就是5.1版本,而且个人理解这一版本的代码结构比较有序,功能也不是太复杂。当然后续会继续分析5.2,5.3以及最新的代码。
注2:在分析的过程中,为了简化代码和逻辑,我打开了下述编译宏以关闭对应的功能:
NO_CGI,NO_WEBSOCKET,NO_DIRECTORY_LISTING,NO_DAV,NO_AUTH,NO_LOGGING
注3:有一个gcc自带的工具cpp,非常便于对原始代码进行预处理。对于我这样不喜欢#if和#ifdef之类的编译宏,在阅读代码时有很大的帮助。我使用的cpp预处理命令如下:
cpp -DNO_CGI -DNO_WEBSOCKET -DNO_DIRECTORY_LISTING -DNO_DAV -DNO_AUTH -DNO_LOGGING -fdirectives-only -nostdinc -undef ../mongoose.c > ../mongoose.i

一个简单的mg_server的使用过程如下

1. 创建一个mg_server,参数可以为空,也可以传递一个自定义的数据
server = mg_create_server(NULL);

2. 配置mg_server
mg_set_option(server, "listening_port", "8080");
mg_add_uri_handler(server, "/", index_html);

3. 进入for循环,轮询mg_sever,超时时间为1000ms,即1s
for (;;) {
  mg_poll_server(server, 1000);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值