0

このコードは、Mongoose 組み込み Web サーバーのサンプル プログラムから取得したものです。

イベント MG_NEW_REQUEST が 2 回呼び出されます。これは予想される動作ですか?同じリクエストを 2 回処理するのはなぜですか? これをどのように防止しますか?

int i =0;
static void *callback(enum mg_event event,
                      struct mg_connection *conn,
                      const struct mg_request_info *request_info)
{
    if (event == MG_NEW_REQUEST)
    {    
        i++;
        printf("%d \n", i);

        // Echo requested URI back to the client
        mg_printf(conn, "HTTP/1.1 200 OK\r\n"
              "Content-Type: text/html\r\n\r\n"
              "%s", request_info->uri);    
        mg_printf(conn, "Hello World!!"
                  "%s", "");

        //request_info->query_string
        return const_cast<char *>("done");  // Mark as processed
    }
    else
    {
        return NULL;
    }
}

int main(void) {
    struct mg_context *ctx;
    const char *options[] = {"listening_ports", "8080", NULL};

    printf("Test web server, open browser to http://localhost:8080 ");
    ctx = mg_start(&callback, NULL, options);
    getchar();  // Wait until user hits "enter"
    mg_stop(ctx);

    return 0;
}
4

1 に答える 1

1

ブラウザは実際には 2 つのリクエストを行うと思います。1 つは URL 用で/、もう 1 つは/favicon.ico.

于 2012-12-01T10:17:46.217 に答える