鲲鹏社区 软件 Mongoose
Mongoose
轻量级的Web服务器
开发语言:C

软件介绍

MongooseC语言写成的网络库。它为TCPUDPHTTPWebSocketCoAPMQTT实现了事件驱动型的非阻塞api,常在嵌入式设备中作为一种轻量级的Web服务器使用。

支持的操作系统

经过华为云严格实测,如下操作系统在鲲鹏生态中可以运行Mongoose

l   CentOS 7.5

l   EulerOS 2.8

支持版本和获取方式

l   建议使用版本为“6.10

编译和测试方式

1.      选择操作环境

本文选用华为鲲鹏云服务ECS KC1实例做测试,详细配置如下:

类别

子项

版本

云服务器配置

ECS实例类型

kc1.xlarge.4

ECS配置

4U16GB

EVS

IO(40GB)*2

OS

CentOS

7.5

Kernel

4.14.0-49

2.      配置编译环境

下载和解压Mongoose软件包。

cd /usr/local/src

wget https://github.com/cesanta/mongoose/archive/6.10.tar.gz

tar -zxvf 6.10.tar.gz

3.      测试Mongoose

1)     创建Web服务器。

Mongoose提供的是源代码,分别为“mongoose.c”和“mongoose.h”, 通过测试调用它们创建Web服务器。

cd /usr/local/src/mongoose-6.10/

touch server.c

vi server.c

插入如下代码,并保存。

#include "mongoose.h"
static const char *s_http_port = "8001";
static struct mg_serve_http_opts s_http_server_opts;
static void event_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, event_handler);
  if (nc == NULL) {
    printf("Failed to create listener\n");
    return 1;
  }
  mg_set_protocol_http_websocket(nc);
  s_http_server_opts.document_root = ".";
  s_http_server_opts.enable_directory_listing = "yes";
  while(1) {
    mg_mgr_poll(&mgr, 1000);
  }
  mg_mgr_free(&mgr);
  return 0;
}

2)     编译源码。

gcc -o server server.c mongoose.h mongoose.c

./server

3)     验证。

放通云服务器安全组中入口规则里的8001端口,在浏览器中输入“http://[ECS IP]:8001”,可以看到“server.c”所在目录的文件列表信息。

软件下载

源码下载立即下载