Чтобы написать веб-сервер на C++, вы можете использовать библиотеку libmicrohttpd
. Вот пример того, как создать простой веб-сервер, который отвечает на все запросы одним и тем же сообщением:
#include <iostream> #include <microhttpd.h> // The response to send to the client const char *response = "Hello, world!\n"; // The callback function that will handle incoming requests int handle_request(void *, MHD_Connection *connection, const char *, const char *, const char *, const char *, size_t *, void **) { // Create a response object MHD_Response *res = MHD_create_response_from_buffer(strlen(response), (void*)response, MHD_RESPMEM_MUST_COPY); // Queue the response for sending int ret = MHD_queue_response(connection, MHD_HTTP_OK, res); // Clean up MHD_destroy_response(res); return ret; } int main() { // Create a new web server MHD_Daemon *daemon = MHD_start_daemon(MHD_USE_THREAD_PER_CONNECTION, 8080, nullptr, nullptr, &handle_request, nullptr, MHD_OPTION_END); if (!daemon) { // If the server couldn't be started, print an error message and exit std::cerr << "Failed to start the server!" << std::endl; return 1; } // Wait for the user to press enter std::cout << "Server is running on port 8080. Press enter to quit." << std::endl; std::cin.get(); // Stop the server MHD_stop_daemon(daemon); return 0; }
В этом примере мы используем функцию MHD_start_daemon()
для создания нового веб-сервера и функцию MHD_queue_response()
для постановки ответа в очередь для отправки клиенту. Мы также используем функцию MHD_stop_daemon()
для остановки сервера, когда пользователь нажимает ввод.
Вы можете использовать аналогичный подход для обработки разных типов запросов и отправки разных ответов на основе данных запроса. Обратитесь к документации libmicrohttpd
для получения дополнительной информации.