Простой веб-сервер C++

Prostoj Veb Server C



В этой статье мы узнаем о веб-серверах на C++. Основная цель веб-сервера — обрабатывать поступающие HTTP-запросы, обрабатывать все поступающие запросы и возвращать в ответ веб-HTML-контент. Нам нужно поддерживать веб-сервер на C++, просто добавляя сетевые библиотеки в среду C++, такие как «сокеты», для обработки сетевых коммуникаций и проблем. Веб-сервер является основой Интернета и средством связи между пользователями и основными серверами. Давайте оценим процесс создания простого веб-сервера на примерах правильной реализации.

Настройка среды

Сначала нам нужно настроить все необходимые параметры в нашей среде. Нам нужно использовать сокеты для прослушивания входящих HTTP-запросов. После этого мы привязываем сокет к определенному порту на хост-машине, которая является нашей системой. После этого, когда клиенты запрашивают запрос, сервер прослушивает эти входящие подключенные запросы. Сервер отвечает на запросы пользователя посредством HTTP-запросов для передачи запроса пользователя на сервер. После этого сервер обрабатывает запрос и возвращает пользователю HTTP-ответы с правильной обработкой.







Обработка сокетов веб-сервера

На этом занятии мы узнаем, что сокеты создают связь между различными процессами, которые выполняются в нашей системе. Сокеты в основном используются для создания связи или соединения между браузером клиента и нашим сервером. Соединение сокета построено на C++ следующим образом:



Здесь мы определим библиотеки для сокетов как «#include ». В основной функции мы создаем сокет, инициализируя «server_fd». После этого мы проверяем значение «server_fd», которое содержит проверку стандартного соединения. Если сервер не работает и не работает нормально, он возвращает или отображает сообщение «Ошибка создания сокета». В противном случае сообщение с IP-адресом веб-сервера будет отображать данные HTML на веб-сервере.



#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++.