mongoose web server helloworld program

前端 未结 3 1379
野的像风
野的像风 2021-02-01 06:42

I came across an embedded web server named mongoose and http://code.google.com/p/mongoose/ and I read the wiki it was great and i searched for some sample hello world program bu

3条回答
  •  借酒劲吻你
    2021-02-01 07:37

    It is quite simple, first you need to implement the call back function:

    void *event_handler(enum mg_event event,
        struct mg_connection *conn) {
    
        const struct mg_request_info *request_info = mg_get_request_info(conn);
    
        static void* done = "done";
    
        if (event == MG_NEW_REQUEST) {
            if (strcmp(request_info->uri, "/hello") == 0) {
                // handle c[renderer] request
                if(strcmp(request_info->request_method, "GET") != 0) {
                    // send error (we only care about HTTP GET)
                    mg_printf(conn, "HTTP/1.1 %d Error (%s)\r\n\r\n%s",
                        500,
                        "we only care about HTTP GET",
                        "we only care about HTTP GET");
                    // return not null means we handled the request
                    return done;
                }
    
                // handle your GET request to /hello
                char* content = "Hello World!";
                char* mimeType = "text/plain";
                int contentLength = strlen(content);
    
                mg_printf(conn,
                    "HTTP/1.1 200 OK\r\n"
                    "Cache: no-cache\r\n"
                    "Content-Type: %s\r\n"
                    "Content-Length: %d\r\n"
                    "\r\n",
                    mimeType,
                    contentLength);
                mg_write(conn, content, contentLength);
                return done;
                }
            }
            // in this example i only handle /hello
            mg_printf(conn, "HTTP/1.1 %d Error (%s)\r\n\r\n%s",
                500, /* This the error code you want to send back*/
                "Invalid Request.",
                "Invalid Request.");
            return done;
        }
    
        // No suitable handler found, mark as not processed. Mongoose will
        // try to serve the request.
        return NULL;
    }
    

    Then you need to start the server:

    int main(int argc, char **argv) {
    
        /* Default options for the HTTP server */
        const char *options[] = {
            "listening_ports", "8081",
            "num_threads", "10",
            NULL
        };
    
        /* Initialize HTTP layer */
        static struct mg_context *ctx;
    
        ctx = mg_start(&event_handler, options);
        if(ctx == NULL) {
            exit(EXIT_FAILURE);
        }
    
        puts("Server running, press enter to exit\n");
        getchar();
        mg_stop(ctx);
    
        return EXIT_SUCCESS;
    }
    

提交回复
热议问题