1 struct mg_mgr mgr; 2 mg_mgr_init(&mgr, NULL);///创建并初始化事件管理器 3 struct mg_connection *c = mg_bind(&mgr, "80", ev_handler_function); 4 mg_set_protocol_http_websocket(c);///创建链接,上面2行代码是服务器应用程序创建的监听链接 5 for (;;) { 6 mg_mgr_poll(&mgr, ...
mg_mgr_poll()迭代所有套接字,接受新连接,发送和接收数据,关闭连接并调用相应事件的事件处理函数。 内存缓冲区 每个连接有一个发送和接收缓冲区,分别是struct mg_connection::send_mbuf和struct mg_connection::recv_mbuf。当数据到达时,Mongoose将收到的数据附加到recv_mbuf并触发MG_EV_RECV事件。用户可以通过调用...
mg_mgr_poll()迭代所有套接字,接受新连接,发送和接收数据,关闭连接并调用相应事件的事件处理函数。 内存缓冲区 每个连接有一个发送和接收缓冲区,分别是struct mg_connection::send_mbuf和struct mg_connection::recv_mbuf。当数据到达时,Mongoose将收到的数据附加到recv_mbuf并触发MG_EV_RECV事件。用户可以通过调用...
structmg_connection*c=mg_bind(&mgr,"80",ev_handler_function);mg_set_protocol_http_websocket(c); 在一个循环里使用calling mg_mgr_poll()创建一个事件循环。 for (;;) { mg_mgr_poll(&mgr, 1000); } mg_mgr_poll()遍历所有socket,接受新连接,发送和接受数据,关闭连接并调用事件处理函数。 内存缓...
1. mg_mgr_init 先对mgr进行初始化,主要是将相关的socket接口函数集合赋值给mgr.ifaces 2. mg_bind 该步骤主要为一个mg_connection申请内存,并将事件回调函数ev_handler注册到该连接里,并且初始化若干个(由网卡数量决定) http端口的socket进行监听 3. mg_mgr_poll 该函数调用mongoose中提供的poll接口:mg_socket...
MG_EV_POLL:将每次调用mg_mgr_poll()发送到每个链接。此事件可做任何事情。例如检测某个超时链接是否关闭,或者发送心跳。 MG_EV_TIMER: 向某个调用mg_set_timer()的链接发送 链接flags: 每个链接都有flasg位域。有些flags是由mongoose设置的,例如如果用户使用udp://1.2.3.4:5678创建一个出站的UDP链接。mongoo...
1structmg_per_session_data2{3time_t tmLastSendHeart;4time_t tmLastRecvHeart;5}67staticvoidfn(structmg_connection* c,intev,void* ev_data,void*fn_data) {89time_t tmNow;10time(&tmNow);11if(ev ==MG_EV_POLL)12{13//time_t tNow;14//time(&tNow);15//TRACE("%d\r\n", tNow)...
1.查看是否有传入数据,如果有,将其读入到读缓冲区中,并发送 MG_EV_READ事件 2.查看是否有数据在写缓冲区,并且写入,发送MG_EV_WRITE事件 3.如果连接正在侦听,则接受传入连接(如果有),并向其发送MG_EV_accept事件 4.发送MG_EV_POLL事件 参数: mgr:一个事件管理器 ...
void mg_mgr_poll(struct mg_mgr *mgr, int ms); 执行轮询迭代,对于在监听链表中的每一个连接 1.查看是否有传入数据,如果有,将其读入到读缓冲区中,并发送 MG_EV_READ事件 2.查看是否有数据在写缓冲区,并且写入,发送MG_EV_WRITE事件 3.如果连接正在侦听,则接受传入连接(如果有),并向其发送MG_EV_accept...
{.root_dir="."};if(ev==MG_EV_HTTP_MSG)mg_http_serve_dir(c,ev_data,&opts);}intmain(intargc,char*argv[]){structmg_mgrmgr;mg_mgr_init(&mgr);// Setup listenermg_http_listen(&mgr,"http://localhost:8000",fn,&mgr);// Event loopfor(;;)mg_mgr_poll(&mgr,1000);mg_mgr_free(...