Прост C++ уеб сървър

Prost C Ueb S Rv R



В тази статия ще научим за уеб сървърите в C++. Основната цел на уеб сървъра е да обработва пристигащите HTTP заявки, да обработва всички идващи заявки и да отговаря с уеб HTML съдържание в замяна. Трябва да поддържаме уеб сървъра в C++, като просто добавим мрежовите библиотеки в C++ средата, като „сокети“, за да се справим с мрежовите комуникации и проблеми. Уеб сървърът е гръбнакът на интернет и е начин за комуникация между потребителите и основните сървъри. Нека оценим процеса на създаване на прост уеб сървър чрез подходящи примерни реализации.

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

Първо трябва да настроим всички необходими опции в нашата среда. Трябва да използваме сокетите, за да слушаме входящите HTTP заявки. След това свързваме сокета към конкретния порт на хост машината като наша система. След това, когато клиентите се обаждат за заявката, сървърът слуша тези входящи свързани заявки. Сървърът отговаря на заявките на потребителя чрез HTTP заявки, за да извлече заявката на потребителя към сървъра. След това сървърът обработва заявката и връща HTTP отговорите на потребителя с правилна обработка.







Обработка на сокети на уеб сървъра

В тази сесия ще научим, че сокетите създават комуникация между различни процеси, които се изпълняват в нашата система. Сокетите основно се използват за създаване на комуникация или връзка между браузъра на клиента и нашия сървър. Връзката на сокета е изградена в C++ по начина, посочен в следното:



Тук ще дефинираме библиотеките за сокети като “#include ”. В основната функция създаваме сокета чрез инициализиране на „server_fd“. След това проверяваме стойността на „server_fd“, която съдържа валидирането на стандартната връзка. Ако сървърът не работи и не работи добре, той връща или показва съобщението „Създаването на сокет е неуспешно“. В противен случай съобщението, което съдържа IP адреса на уеб сървъра, ще покаже данните от HTML на уеб сървъра.



#include
#include
#include
int main ( ) {
int сървър_fd = гнездо ( AF_INET, SOCK_STREAM, 0 ) ;
ако ( server_fd == - 1 ) {
std::cerr << „Неуспешно създаване на сокет“ ;
връщане -1 ;
}
// друго
// {
// std::cout << 'изход' ;
// }
// обвързвам
std::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;
анулира LinearSearch ( вътрешен обр [ ] , int len, int елемент ) {
за ( вътр аз = 0 ;i < len;i++ ) {
ако ( обр [ аз ] == елемент ) {
cout << вещ << ' Намерено в индекс : ' << i;
връщане ;
}
}
cout << „Не е намерено“ ;
}
int main ( ) {
вътрешен обр [ ] = { 10 , 5 , петнадесет , двадесет и едно , - 3 , 7 } ;
int len ​​= sizeof ( обр ) / размер на ( обр [ 0 ] ) ;
int елемент = двадесет и едно ;
Линейно търсене ( arr, len, item ) ;
връщане 0 ;
}


В този пример търсим елемента „21“ на кой индекс. И така, изпълняваме този код. Резултатът от този код е приложен в следното:


Този изход вече е отворен на уеб сървъра, както във всеки браузър като Chrome, Edge и др.

Прекратете всички връзки след изходния дисплей

Това е последната стъпка в обработката на данните на уеб сървър. Не забравяйте да затворите връзките на гнездата, след като извършите необходимия изход. Затваряме сокета тук, като използваме функциите като „close(server_id)“ и „close (client socket)“.

В края на стартирането на сървъра очакваният резултат се показва на уеб страницата чрез достъп до адреса като „http//localhost:8080“.

Заключение

В края на тази статия можем да кажем, че простата обработка на уеб сървъра в C++ е наистина сложна и се нуждае от пълна концентрация, за да изпрати и получи заявката на HTTP клиента. Можем да разширим функционалността на уеб сървъра, за да показваме динамично съдържанието на уеб страницата. Надяваме се, че тази статия е полезна за вас и можете да стартирате тези примери във вашата среда, за да разберете стъпките, които са необходими за създаване на прост уеб сървър в C++.