mongoose 嵌入web服务器 例子

mongoose 嵌入web服务器 例子

参考:

https://blog.csdn.net/wowocpp/article/details/116206013

settings_panel_for_a_device

./settings_panel
Starting device configurator on port 8000
在这里插入图片描述

./multithreaded

Started on port 8000

在这里插入图片描述

在这里插入图片描述

publish_subscribe

./publish_subscribe 8000 server

Starting pubsub server on port 8000
New client connected from 192.168.99.219:55907
New client connected from 192.168.99.219:52381
New client connected from 192.168.99.219:49577
New client connected from 192.168.99.219:51166
New client connected from 192.168.99.219:49899

通过浏览器输入如下网址:
http://192.168.99.31:8000/

./restful_client

Starting RESTful client against http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=cesanta

Server closed connection

RESTful server host and request URI

./cookie_auth

Starting web server on port 8000
Starting web server on port 8000
user logged in, sid 25690a82c6be15f2
user (sid 25690a82c6be15f2) requested /
Session 25690a82c6be15f2 (user) closed due to idleness.

在这里插入图片描述
分别输入:
user
password
在这里插入图片描述

restful_server

Starting RESTful server on port 8000, serving .

在这里插入图片描述

./mqtt_broker

MQTT broker started on 0.0.0.0:1883
USER HANDLER GOT EVENT 1
USER HANDLER GOT EVENT 3
USER HANDLER GOT EVENT 201
USER HANDLER GOT EVENT 4
USER HANDLER GOT EVENT 3
USER HANDLER GOT EVENT 203
USER HANDLER GOT EVENT 3
USER HANDLER GOT EVENT 203
USER HANDLER GOT EVENT 3
USER HANDLER GOT EVENT 203
USER HANDLER GOT EVENT 3
USER HANDLER GOT EVENT 212

win7 下面

在这里插入图片描述
设置
在这里插入图片描述
断开连接的时候 有点问题
比较慢

connected_device_3

Starting web server on port 8000

在这里插入图片描述

connected_device_4

在这里插入图片描述

udp_client

./udp_client 192.168.99.219:60000 55555

在这里插入图片描述

这个是干啥 不懂

在这里插入图片描述
224.1.1.1
65000

nc

./nc 192.168.99.219:60000

在这里插入图片描述

websocket_chat

/home/sama5d2/general_work/http_web_server/mongoose/mongoose-6.18/examples/websocket_chat

./websocket_chat
Started on port 8000
192.168.99.219:50468 ++ joined
192.168.99.219:50468 1111
33333
127.0.0.1:60248 ++ joined
127.0.0.1:60248 9999
192.168.99.219:50468 ok
127.0.0.1:60248 hello

在这里插入图片描述

websocket_chat_client

websocket_chat 运行的同时
同一个机器上,运行下面的程序:

./websocket_chat_client
-- Connected
192.168.99.219:65479 ++ joined
192.168.99.219:65479 -- left
192.168.99.219:54058 ++ joined
1111
192.168.99.219:54058 55555

2个网页端 和1个客户端 之间互相通信
相当于聊天室 群聊

sntp_client

同步时间

static const char *s_default_server = “pool.ntp.org”;

sntp_client
Local time: Thu Apr 29 15:32:44 2021
Time from pool.ntp.org: Thu Apr 29 15:32:45 2021

dashboard

在这里插入图片描述
make clean
make
在这里插入图片描述

live-log

在这里插入图片描述

websocket-server

mongoose-7.2/examples/websocket-server
修改
在这里插入图片描述

cc …/…/mongoose.c -I…/… -W -Wall -DMG_ENABLE_LINES=1 -DMG_ENABLE_DIRECTORY_LISTING=1 -o example main.c
./example
2021-04-29 08:06:00 I sock.c:469:mg_listen 1 accepting on http://0.0.0.0:8000

// Example Websocket server. Usage:
// 1. Start this server, type make
// 2. Open https://www.websocket.org/echo.html in your browser
// 3. In the “Location” text field, type ws://127.0.0.1:8000/websocket

http://coolaf.com/tool/chattest

在这里插入图片描述

怎么同时启动一个 别的进程提供数据呢?

multithreaded.c 和 websocket_chat 结合一下
或者和 nc 结合一下
mg_start_thread
mg_broadcast
都是啥意思

big_upload

Starting web server on port 8000

在这里插入图片描述

video-stream

2021-04-30 02:18:54 I mongoose.c:3056:mg_listen 1 accepting on http://0.0.0.0:8000

在这里插入图片描述

curl 192.168.99.31:8000/api/video1
在这里插入图片描述

在这里插入图片描述

3.2 版本接口 — 2012年
void
mg_stop(struct mg_context *ctx)
{
	ctx->stop_flag = 1;

	/* Wait until mg_fini() stops */
	while (ctx->stop_flag != 2)
		(void) sleep(1);

	assert(ctx->num_threads == 0);
	free(ctx);

#if defined(_WIN32)
	(void) WSACleanup();
#endif /* _WIN32 */
}



struct mg_context *
mg_start(void)
{
	struct mg_context	*ctx;
	const struct mg_option	*option;

#if defined(_WIN32)
	WSADATA data;
	WSAStartup(MAKEWORD(2,2), &data);
#endif /* _WIN32 */

	if ((ctx = (struct mg_context *) calloc(1, sizeof(*ctx))) == NULL) {
		cry(fc(ctx), "cannot allocate mongoose context");
		return (NULL);
	}

	/* Initialize options. First pass: set default option values */
	for (option = known_options; option->name != NULL; option++)
		ctx->options[option->index] = option->default_value == NULL ?
			NULL : mg_strdup(option->default_value);

	/* Call setter functions */
	for (option = known_options; option->name != NULL; option++)
		if (option->setter != NULL &&
		    ctx->options[option->index] != NULL)
			if (option->setter(ctx,
			    ctx->options[option->index]) == FALSE) {
				mg_fini(ctx);
				return (NULL);
			}

	DEBUG_TRACE((DEBUG_MGS_PREFIX "%s: root [%s]",
	    __func__, ctx->options[OPT_ROOT]));

#if !defined(_WIN32)
	/*
	 * Ignore SIGPIPE signal, so if browser cancels the request, it
	 * won't kill the whole process.
	 */
	(void) signal(SIGPIPE, SIG_IGN);
#endif /* _WIN32 */

	(void) pthread_rwlock_init(&ctx->rwlock, NULL);
	(void) pthread_mutex_init(&ctx->mutex, NULL);
	(void) pthread_cond_init(&ctx->thr_cond, NULL);
	(void) pthread_cond_init(&ctx->empty_cond, NULL);
	(void) pthread_cond_init(&ctx->full_cond, NULL);

	/* Start master (listening) thread */
	start_thread(ctx, (mg_thread_func_t) master_thread, ctx);

	return (ctx);
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你回答这个问题。首先,你需要安装Mongoose web服务器。在Ubuntu终端中使用以下命令进行安装: ``` sudo apt-get update sudo apt-get install mongoose ``` 安装完成后,你可以使用以下代码在本地创建一个简单的网页聊天室: ```c #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(int argc, char *argv[]) { struct mg_mgr mgr; struct mg_connection *nc; mg_mgr_init(&mgr, NULL); nc = mg_bind(&mgr, s_http_port, ev_handler); if (nc == NULL) { printf("Failed to create listener\n"); return 1; } mg_set_protocol_http_websocket(nc); s_http_server_opts.document_root = "."; printf("Starting web server on port %s\n", s_http_port); while (1) { mg_mgr_poll(&mgr, 1000); } mg_mgr_free(&mgr); return 0; } ``` 上述代码会在本地的8000端口上启动Mongoose web服务器,并在当前目录下提供静态文件服务。 接下来,你需要编写一些JavaScript代码来实现网页聊天室功能。你可以使用WebSockets来实现实时通信。以下是一个简单的实例: ```javascript var socket = new WebSocket("ws://" + location.hostname + ":8000/chat"); socket.onopen = function() { console.log("Connected to server"); } socket.onmessage = function(event) { console.log("Received message: " + event.data); } socket.onclose = function() { console.log("Disconnected from server"); } function sendMessage() { var message = document.getElementById("message").value; socket.send(message); } ``` 在上述代码中,我们使用WebSocket API与服务器进行实时通信。当消息发送到服务器时,服务器会将消息广播给所有连接到聊天室的客户端。你需要在服务器端编写代码来处理这些消息并将它们广播到所有客户端。 希望这些信息能帮到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值