mongoose搭建web服务(一)

17 篇文章 64 订阅

最近工作当中遇到了mongoose,主要是用它作为web服务器,在嵌入式设备上使用,用于pc web客户端与设备端数据交互。这里不介绍mongoose本身,只记录编译mongoose过程中遇到的问题,及使用实例,测试使用的是postman工具。

1,源码下载与编译

源码在github上也有,这是我自己的上传的源码,在这里

编译过程遇到的问题:

原因为没有链接ssl,编译选项添加:-lssl

添加链接库:-lcrypto

2,实例

这里将mongoose编译成了so动态库,与实例一起编译和使用。

int main()
{
    struct mg_mgr mgr;
    mg_mgr_init(&mgr, NULL);

    struct mg_connection *con = mg_bind(&mgr, "8189", ev_handler);
    mg_set_protocol_http_websocket(con);

    int times = 30;
    while (times-- > 0)
    {
        mg_mgr_poll(&mgr, 1000);
        sleep(1);
    }
    
    mg_mgr_free(&mgr);
    return 0;
}

以上只是main函数,下载的源码里有完整的例子。

3,测试

用的是postman工具进行测试,实例运行如下:

4,Makefile

CC = g++ #arm-himix200-linux-gcc
CFLAGS = -Wall -g#-Wl,--wrap=fopen
INCLUDE = -I../json/include 
LIB = -L../json/lib -lpthread -lssl -lcrypto -ljsoncpp
SRC = main.cpp
OJB = $(SRC:.cpp=.o)
DEP = $(OJB:.o=.cpp.d)
SO_LIBARAY = libWebServer.so

ifneq ($(target),)
	TARGET = $(target)
else
	TARGET = a.out
endif

All: $(SO_LIBARAY) $(TARGET)

include $(DEP)

$(TARGET): $(OJB) 
	$(CC)  $(CFLAGS) $^ -o $@ ./$(SO_LIBARAY) $(LIB)

$(OJB) : $(SRC) 
	@$(CC) $(INCLUDE) $(CFLAGS) -c $< -o $@ $(LIB)


#编译动态库
$(SO_LIBARAY): mongoose.o
	gcc $(CFLAGS) -shared $< -o $@ $(LIB)

mongoose.o: mongoose.c mongoose.h
	gcc $(CFLAGS) -fPIC -c $< -o $@ $(LIB)

%.cpp.d: %.cpp
	@$(CC)  $(CFLAGS) -MM -E $^ > $@
clean:
	rm -rf $(OJB) $(TARGET) $(SO_LIBARAY) $(DEP) mongoose.o

makefile中把mongoose编译成了动态库,且同时使用了json库,上面的下载路径下也有json库,可自行下载编译。若不需要使用json可以修改makefile不指定头文件及链接json库。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值