连接错误:检查连接是否正常建立。如果连接没有建立或已经关闭,mg_send_response_line()函数将无法工作。可以使用mg_connect()函数来建立连接,并使用mg_is_connected()函数来检查连接状态。 内存错误:如果服务器的内存不足,mg_send_response_line()函数可能无法正常工作。可以尝试增加服务器的内存或优化代码以减少内...
MG_EV_CONNECT:当使用mg_connect() 创建连接套接字时触发该事件,ev_data 为int *success,success为0表示成功,否则为失败的errno MG_EV_RECV:接收到新的数据,void *ev_data 是接收到的字节数,接收到应该使用recv_mbuf来获取数据,使用mg_send()发送数据。Mongoose 使用realloc来扩展接收缓冲区,但是需要由用户删除...
MG_EV_SEND:Mongoose已经向远程对等体写入了数据,并丢弃了数据mg_connection::send_mbuf。void *ev_data是int *num_sent_bytes。 注意:Mongoose输出功能仅将数据附加到mg_connection::send_mbuf。他们不做任何套接字写。实际的IO由mg_mgr_poll()完成。一个MG_EV_SEND事件是关于IO已经完成的通知。 MG_EV_POLL...
MG_EV_SEND:Mongoose已经向远程对等体写入了数据,并丢弃了数据mg_connection::send_mbuf。void *ev_data是int *num_sent_bytes。 注意:Mongoose输出功能仅将数据附加到mg_connection::send_mbuf。他们不做任何套接字写。实际的IO由mg_mgr_poll()完成。一个MG_EV_SEND事件是关于IO已经完成的通知。 MG_EV_POLL...
当 Mongoose 成功将数据写入套接字时,它会丢弃来自 struct mg_connection::send 的数据并发送 MG_EV_WRITE 事件。 事件处理函数 每个连接都有一个与之关联的事件处理程序函数,该函数必须由用户实现。事件处理程序是 Mongoose 的关键元素,因为它定义了连接的行为。请参阅下面的事件处理程序函数示例: // Event ...
static void mgEvHandler(struct mg_connection *nc, int ev, void *p); static void mgSendBody(struct mg_connection *nc, const char *content); //发送body信息 static void mgSendFile(struct mg_connection *nc, struct http_message *hm, const char* filePath); ...
mg_send(nc,buffer,strlen(buffer)); nc->flags|=MG_F_SEND_AND_CLOSE; } break; ... } } intmain(void){ ... } 代码解析: •在ev_handler函数内部,在MG_EV_HTTP_REQUEST事件中处理GET请求参数。我们使用mg_get_http_var函数来解析参数。 •如果成功解析到参数,我们将参数值拼接到响应字符串中,...
text/plain\r " "Content-Length: %ld\r " "\r ", file_size); mg_send(nc, http_head, strlen(http_head)); char buffer[1024]; size_t bytes_read; while ((bytes_read = fread(buffer, 1, sizeof(buffer), fp)) > 0) { mg_send(nc, buffer, bytes_read); } fclose(fp); } ...
在做RESTful server API的时候,难免要根据请求来订制响应方式,这里应该注意mongoose提供的mg_*_send_*和mg_*_printf_*系列函数,根据实际需要来酌情选择: voidmg_send(structmg_connection*,constvoid*buf,intlen);intmg_printf(structmg_connection*,constchar*fmt,...);voidmg_printf_http_chunk(structmg_connec...
mg_printf(nc, reply, path, (unsigned int) mg_time()); nc->flags |= MG_F_SEND_AND_CLOSE; } #endifMG_INTERNAL void mg_handle_mkcol(struct mg_connection *nc, const char *path, struct http_message *hm) { int status_code = 500; ...