Mongoose源码分析

来源:互联网 发布:类似买卖时机软件 编辑:程序博客网 时间:2024/05/18 01:33

Mongoose是一个简易的web服务器,所谓web服务器,简单的说就是把服务断的数据返回给客户端。

的源码很简单,主要就是Mongoose.c文件,里面包含了大部分的处理。

Mongoose里面有几个比较重要点的数据结构:


主要就是上面的两个数据结构了

下面看下如何使用它。

首先我们需要启动http服务,这是通过调用mg_start来实现的

这个函数包括一个mg_callback_t类型的回调,user_data可以为NULL,option是一引起需要设置的选项,没有的话会使用里面默认的,如端口默认是8080等。

  

mg_start主要是进行一些初始化操作,然后等待启动一个线程等待客户端连接的到来。再启动了一定数量的工作线程进行具体的处理

首先来看一下主线程:


这里主要是有连接到来的时候调用accept_new_connection把它加入到一个队列里面去。后面的代码就不跟踪了

再来年下worker_thread

[
具体的处理是通过process_new_connection进行的

这里面的读取请求是通过read_request,里面再调用pull进行数据的读取


再来看一下请求解析的函数:

 

它的主要工作就是从buf中提取出信息放到ri(一个mg_request_info结构)中去,因为buf是一个无结构的字符串数组。要将它存储到ri中去,需要找到对应的子串。
这里主要用到了skip()、parse_http_headers()方法,其中skip()很关键


当我们要发送数据给client端时,可以通过mg_write函数来实现,这个函数可以在回调函数里面去调用。



主要就是send发送数据过去


mongoose的基本流程大概也就这样,其它的就以后需要时再去具体分析吧。

转自:http://blog.csdn.net/new_abc/article/details/7679661