int main(void) { struct mg_server *server = mg_create_server(NULL); mg_set_option(server, "listening_port", "8080"); mg_add_uri_handler(server, "/", handler); printf("Starting on port %s\n", mg_get_option(server, "listening_port")); for (;;) { mg_poll_server(server, 1000); } mg_destroy_server(&server); return 0; }
int main(void) { struct mg_server *server1, *server2; server1 = mg_create_server((void *) "1"); server2 = mg_create_server((void *) "2"); mg_add_uri_handler(server1, "/", request_handler); mg_add_uri_handler(server2, "/", request_handler); // Make both server1 and server2 listen on the same socket mg_set_option(server1, "listening_port", "8080"); mg_set_listening_socket(server2, mg_get_listening_socket(server1)); // server1 goes to separate thread, server 2 runs in main thread. // IMPORTANT: NEVER LET DIFFERENT THREADS HANDLE THE SAME SERVER. mg_start_thread(serve, server1); serve(server2); return 0; }
int _tmain(int argc, _TCHAR* argv[]) { struct mg_server *server = mg_create_server(NULL); mg_set_option(server, "document_root", "."); // Serve current directory mg_set_option(server, "listening_port", "80"); // Open port 8080 mg_add_uri_handler(server, "/callPython/", event_handler); for (;;) { mg_poll_server(server, 1000); // Infinite loop, Ctrl-C to stop } mg_destroy_server(&server); return 0; }
int main(int argc, char *argv[]) { struct mg_server *server = mg_create_server(NULL); mg_set_option(server, "listening_port", "8080"); mg_set_option(server, "document_root", argc > 1 ? argv[1] : "."); mg_add_uri_handler(server, "/ws", handler); mg_start_thread(timer_thread, server); printf("Started on port %s\n", mg_get_option(server, "listening_port")); for (;;) { mg_poll_server(server, 3000); } mg_destroy_server(&server); return 0; }
int main(void) { struct mg_server *server; // Create and configure the server server = mg_create_server(NULL); mg_set_option(server, "listening_port", "8080"); mg_add_uri_handler(server, "/", index_html); // Serve request. Hit Ctrl-C to terminate the program printf("Starting on port %s\n", mg_get_option(server, "listening_port")); for (;;) { mg_poll_server(server, 1000); } // Cleanup, and free server instance mg_destroy_server(&server); return 0; }
static const char *test_mg_connect(void) { char buf2[40] = "", buf3[40] = "", buf4[40] = ""; struct mg_server *server = mg_create_server(NULL); ASSERT(mg_set_option(server, "listening_port", LISTENING_ADDR) == NULL); ASSERT(mg_set_option(server, "document_root", ".") == NULL); mg_add_uri_handler(server, "/x", cb4h); ASSERT(mg_connect(server, "", 0, 0, NULL, NULL) == 0); ASSERT(mg_connect(server, "127.0.0.1", atoi(HTTP_PORT), 0, cb2, buf2) == 1); ASSERT(mg_connect(server, "127.0.0.1", 29, 0, cb3, buf3) == 1); ASSERT(mg_connect(server, "127.0.0.1", atoi(HTTP_PORT), 0, cb4, buf4) == 1); { int i; for (i = 0; i < 50; i++) mg_poll_server(server, 0); } ASSERT(strcmp(buf2, "add") == 0); ASSERT(strcmp(buf3, "1") == 0); ASSERT(strcmp(buf4, "500 Server Error\nPOST size > 999") == 0); mg_destroy_server(&server); return NULL; }
static const char *test_server(void) { char buf1[100] = "", buf2[100] = ""; struct mg_server *server = mg_create_server((void *) "foo"); ASSERT(server != NULL); ASSERT(mg_set_option(server, "listening_port", LISTENING_ADDR) == NULL); ASSERT(mg_set_option(server, "document_root", ".") == NULL); mg_add_uri_handler(server, "/cb1", cb1); mg_set_http_error_handler(server, error_handler); ASSERT(mg_connect(server, "127.0.0.1", atoi(HTTP_PORT), 0, ts1, buf1) == 1); ASSERT(mg_connect(server, "127.0.0.1", atoi(HTTP_PORT), 0, ts2, buf2) == 1); { int i; for (i = 0; i < 50; i++) mg_poll_server(server, 0); } ASSERT(strcmp(buf1, "foo ? 127.0.0.1") == 0); ASSERT(strcmp(buf2, "404 ERR: 404") == 0); ASSERT(strcmp(static_config_options[URL_REWRITES * 2], "url_rewrites") == 0); mg_destroy_server(&server); ASSERT(server == NULL); return NULL; }
void Server::start() { if (server == NULL) { #ifdef ENABLE_STATS requests = 0; startTime = getTime(); #endif server = mg_create_server(this); // size_t size = optionsMap.size()*2+1; map<string, string>::iterator it; for (it=optionsMap.begin(); it!=optionsMap.end(); it++) { mg_set_option(server, (*it).first.c_str(), (*it).second.c_str()); } mg_add_uri_handler(server, "/", event_handler); mg_server_do_i_handle(server, do_i_handle); stopped = false; mg_start_thread(server_poll, this); } else { throw string("Server is already running"); } }