mongoose socket编程实例

43 篇文章 0 订阅
17 篇文章 0 订阅

mongoose是一款非常容易使用的web服务器,实现了对socket的封装,它提供给我们的接口非常简洁,并且能提供很好的性能。

几个重要的结构:

struct mg_context

       服务器上下文,保存着服务器的配置信息。每个mg_context都代表一个服务器。

struct mg_connection

       表示HTTP的连接

struct mg_request_info

       HTTP请求信息。这个结构中保存着用户请求的所有的信息,例如http版本信息等。

重要的函数:

void mg_set_uri_callback(struct mg_context *context, const char *uri_regex, mg_callback_t func, void *user_data)

函数中的第一个参数是服务器上下文。

第二第三的参数分别是URI地址和函数指针,mg_set_uri_callback这个函数的功能就是在把这两个参数间联系起来,在用户申请这个URI时,服务器就会这个函数指针指向的函数。func的原型是:

void mg_set_log_callback(struct mg_context *ctx, mg_callback_t func)

第四个参数是func的一个参数。

mongoose使用实例

使用mongoose创建一个web服务大致可以分为两个部分:1.启动并配置服务器;2.处理请求,在配置服务器是,我们需要指定相应的URI handler,URI handler是一个函数,这个函数在用户请求URI时被调用。

一个简单的例子:

#include "mongoose.h"

static void 
show_index( 
        struct mg_connection            *conn, 
        const struct mg_request_info    *request_info, 
        void                            *user_data) 

        mg_printf(conn, "%s", 
                "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"); 
        mg_printf(conn,"%s","<html><h3>test</h3></html><br>")

}

int main(int argc,char *argv[]) 

        struct mg_context *ctx;

        ctx = mg_start();                                 //第1步 
        if (mg_get_option(ctx,"ports")==NULL &&            
                mg_set_option(ctx,"ports","8080")!=1) {   //第2步 
                exit(1); 
        }

        mg_set_uri_callback(ctx,"/",&show_index,(void*)&data);   //第3步 
        getchar(); 
        mg_stop(ctx); 
        return (0); 
}

第一步:创建一个服务器。

第二部:配置服务器。这个例子中配置了服务器的端口号。

第三步:配置URI对应的函数,这里的URI是”/”,当用户请求的URI是/时,服务器调回调用show_index函数处理这个请求。show_index需要用户自行定义,我们写了一个最简单的版本,它在浏览器上显示test这个字符串。

mongoose主页:http://code.google.com/p/mongoose/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值