В этой статье мы узнаем о веб-серверах на C++. Основная цель веб-сервера — обрабатывать поступающие HTTP-запросы, обрабатывать все поступающие запросы и возвращать в ответ веб-HTML-контент. Нам нужно поддерживать веб-сервер на C++, просто добавляя сетевые библиотеки в среду C++, такие как «сокеты», для обработки сетевых коммуникаций и проблем. Веб-сервер является основой Интернета и средством связи между пользователями и основными серверами. Давайте оценим процесс создания простого веб-сервера на примерах правильной реализации.
Настройка среды
Сначала нам нужно настроить все необходимые параметры в нашей среде. Нам нужно использовать сокеты для прослушивания входящих HTTP-запросов. После этого мы привязываем сокет к определенному порту на хост-машине, которая является нашей системой. После этого, когда клиенты запрашивают запрос, сервер прослушивает эти входящие подключенные запросы. Сервер отвечает на запросы пользователя посредством HTTP-запросов для передачи запроса пользователя на сервер. После этого сервер обрабатывает запрос и возвращает пользователю HTTP-ответы с правильной обработкой.
Обработка сокетов веб-сервера
На этом занятии мы узнаем, что сокеты создают связь между различными процессами, которые выполняются в нашей системе. Сокеты в основном используются для создания связи или соединения между браузером клиента и нашим сервером. Соединение сокета построено на C++ следующим образом:
Здесь мы определим библиотеки для сокетов как «#include
#include
#include
#include
int главный ( ) {
int server_fd = сокет ( AF_INET, SOCK_STREAM, 0 ) ;
если ( сервер_фд == - 1 ) {
станд::серр << «Создание сокета не удалось» ;
возвращаться -1 ;
}
// еще
// {
// станд::cout << 'Выход' ;
// }
// связывать
станд::cout << 'http//:127.0.0.1:8080' ;
// Дальнейший код находится здесь
возвращаться 0 ;
}
Вывод этого кода прилагается следующим образом:
Это показывает, что сокет успешно создан на C++ для подключения к веб-серверу.
Обработка веб-сервера на C++
Веб-сервер системы настроен для обработки различных концепций C++, таких как сортировка слиянием, линейная сортировка и т. д. Не забудьте инициализировать важные сетевые библиотеки. Веб-сервер работает на локальном компьютере (127.0.0.1) и прослушивает порт 8080.
Включите необходимые библиотеки на языке программирования C++ следующим образом:
# включать < способствовать росту / asio.hpp >
Помните, что создание веб-сервера на C++ — непростой и трудоемкий процесс. Мы можем обрабатывать входящие соединения, используя «async_accept».
Ответы сервера в коде C++ на веб-сервере
Ответ сервера должен быть HTTP, который работает в браузере и отображает выходные данные в представлении HTML на веб-странице. Все библиотеки управляют серверами и обрабатывают все действительные запросы.
Привязка и прослушивание веб-сервера
Далее нам нужно знать о привязке и прослушивании веб-сервера, чтобы легко выполнять код на веб-странице. После этого нам нужно привязать сокет к заданному адресу нашей системы, то есть к IP-адресу и порту, на котором эти сокеты активны. На порте начинаем прослушивать входящие соединения.
Нам нужно инициализировать несколько библиотек для привязки и компоновки.
Sockaddr_in адрес;
Мы можем привязать сервер. Если сервер не работает или не подключен, сообщение не отображается на веб-странице любого браузера.
Принятие подключений к веб-серверу
В этом разделе мы узнаем, как можно контролировать поток запросов клиента. Сервер принимает все клиентские запросы по протоколу HTTP. Сокет сервера указывает размер сообщения, полученного на веб-сервере от клиента. Сообщение содержит соединение сокета сервера и адрес более четко и уникально. Мы проверяем, должен ли сервер отвечать, если пользовательский сокет найден или нет. Если соединение пользовательского сокета не найдено, мы не можем принять соединение с веб-сервером.
Методы отправки и получения данных со стороны пользователя и сервера
После создания ссылок на сокеты и принятия соединения следующим шагом будет отправка данных на сторону сервера и получение данных с сервера, используя разные ключевые слова и создание функций, связанных с отправкой и получением данных на C++. Здесь мы проверяем реакцию данных. Это запрос на получение данных или на отправку данных с веб-сервера? Проверяем статус ответа на запрос клиента. Мы временно сохраняем все клиентские запросы в буфере для отображения сообщения или вывода на веб-сервере.
Линейная сортировка в C++
Давайте выполним здесь линейную сортировку и легко отобразим результат линейной сортировки на веб-сервере. Фрагмент кода линейной сортировки прилагается ниже:
#includeиспользование пространства имен std;
void LinearSearch ( int обр. [ ] , int len, int item ) {
для ( интервал я '=' 0 ;я < Лен;я++ ) {
если ( обр. [ я ] == элемент ) {
расчет << элемент << 'Найдено по индексу: ' << я;
возвращаться ;
}
}
расчет << 'Не найдено' ;
}
int главный ( ) {
int обр. [ ] '=' { 10 , 5 , пятнадцать , двадцать один , - 3 , 7 } ;
int len = sizeof ( обр. ) / размер ( обр. [ 0 ] ) ;
int элемент = двадцать один ;
Линейный поиск ( обр, лен, шт. ) ;
возвращаться 0 ;
}
В этом примере мы ищем элемент «21», по индексу которого. Итак, мы запускаем этот код. Вывод этого кода прилагается следующим образом:
Этот вывод теперь открыт на веб-сервере, как и в любом браузере, таком как Chrome, Edge и т. д.
Завершите все соединения после отображения вывода
Это последний шаг в обработке данных на веб-сервере. Не забудьте закрыть соединения сокетов после выполнения необходимого вывода. Здесь мы закрываем сокет, используя такие функции, как «закрыть(server_id)» и «закрыть (клиентский сокет)».
В конце работы сервера ожидаемый результат отображается на веб-странице путем доступа к адресу «http//localhost:8080».
Заключение
В конце этой статьи мы можем сказать, что простая обработка веб-сервера на C++ действительно сложна и требует полной концентрации для отправки и получения запроса HTTP-клиента. Мы можем расширить функциональность веб-сервера для динамического отображения контента на веб-странице. Надеемся, эта статья окажется для вас полезной, и вы сможете запустить эти примеры в своей среде, чтобы понять шаги, необходимые для создания простого веб-сервера на C++.