Mongoose之开源web服务器

1、Mongoose介绍

Mongoose 是一款嵌入式 web服务器。使用C语言编写,它可以很容易的嵌入到其他平台或是程序中,并为其提供了web接口。它为客户端和服务器模式实现TCP,UDP,HTTP,WebSocket,CoAP,MQTT的事件驱动的非阻塞API

内置协议:
· 普通TCP,普通UDP,SSL / TLS(单向或双向),客户端和服务器
· HTTP客户端和服务器
· WebSocket客户端和服务器
· MQTT客户端和服务器
· CoAP客户端和服务器
· DNS客户端和服务器
·异步DNS解析器

2、Mongoose源码下载

下载地址:https://github.com/cesanta/mongoose/releases/

实际项目开发中,我们只需要mongoose.c + mongoose.h两个文件就可以了。因为mongoose.h头文件中通过宏的方式,已经将 src/comon/platforms目录下的所有跨平台的文件定义嵌入到了其中。所以不再需要我们将src目录下的所有文件及目录都嵌套在我们的项目里.

在初始化mongoose(mg_mgr_init)句柄的时候,就会根据CS_PLATFORM 的值而获取对应的初始化函数去初始化mongoose句柄.

3、Linux环境使用

注意:默认情况下,mongoose的日志是被宏禁掉了的,如果想要其打印日志信息,则需要开启日志打印宏(#define CS_ENABLE_STDIO 1

(1)编写一个简单的Web Server demo

#include "mongoose.h"
 
 static const char *s_http_port = "8000";
 static struct mg_serve_http_opts s_http_server_opts;
 
 static void ev_handler(struct mg_connection *nc, int ev, void *p) {
   if (ev == MG_EV_HTTP_REQUEST) {
     mg_serve_http(nc, (struct http_message *) p, s_http_server_opts);
   }
 }
 
 int main(void) {
   struct mg_mgr mgr;
   struct mg_connection *nc;
 
   mg_mgr_init(&mgr, NULL);
   printf("Starting web server on port %s\n", s_http_port);
   nc = mg_bind(&mgr, s_http_port, ev_handler);
   if (nc == NULL) {
     printf("Failed to create listener\n");
     return 1;
   }
 
   // Set up HTTP server parameters
   mg_set_protocol_http_websocket(nc);
   s_http_server_opts.document_root = ".";  // Serve current directory
   s_http_server_opts.enable_directory_listing = "yes";
 
   for (;;) {
     mg_mgr_poll(&mgr, 1000);
   }
   mg_mgr_free(&mgr);
 
   return 0;
 }

(2)将该simplest_web_server.c和 下载得到的源码包中的 mongoose.c  mongoose.h一起参与编译。

(3)执行simplest_web_server,我们在浏览器中访问server后得到响应是如下结果:

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值