Једноставан Ц++ веб сервер

Jednostavan C Veb Server



У овом чланку ћемо научити о веб серверима у Ц++. Главна сврха веб сервера је да обрађује пристигле ХТТП захтеве, обрађује све надолазеће захтеве и одговори са веб ХТМЛ садржајем заузврат. Морамо да одржавамо веб сервер у Ц++ тако што ћемо само додати мрежне библиотеке у Ц++ окружење, као што су „сокети“, да бисмо решили мрежне комуникације и проблеме. Веб сервер је окосница интернета и начин је комуникације између корисника и главних сервера. Хајде да проценимо процес креирања једноставног веб сервера кроз одговарајуће примере имплементације.

Постављање окружења

Прво морамо да поставимо све потребне опције у нашем окружењу. Морамо да користимо сокете да бисмо слушали долазне ХТТП захтеве. Након тога, везујемо утичницу за одређени порт на главној машини као наш систем. Након тога, када клијенти позову захтев, сервер слуша ове долазне повезане захтеве. Сервер одговара на корисничке захтеве путем ХТТП захтева да дохвати захтев корисника на сервер. Након тога, сервер обрађује захтев и враћа ХТТП одговоре кориснику уз одговарајућу израду.







Руковање утичницама веб сервера

У овој сесији ћемо научити да утичнице стварају комуникацију између различитих процеса који се покрећу у нашем систему. Утичнице се у основи користе за стварање комуникације или везе између клијентовог претраживача и нашег сервера. Веза сокета је изграђена у Ц++ на начин који је поменут у наставку:



Овде ћемо дефинисати библиотеке за утичнице као „#инцлуде <сис/соцкет.х>“. У главној функцији креирамо утичницу иницијализацијом „сервер_фд“. Након тога, проверавамо вредност „сервер_фд“ која садржи валидацију залихе везе. Ако сервер не ради и не ради добро, враћа или приказује поруку „Креирање утичнице није успело“. У супротном, порука која има ИП адресу веб сервера ће приказати податке ХТМЛ-а на веб серверу.



#инцлуде <иостреам>
#инцлуде <сис/соцкет.х>
#инцлуде <нетинет/ин.х>
инт маин ( ) {
инт сервер_фд = соцкет ( АФ_ИНЕТ, СОЦК_СТРЕАМ, 0 ) ;
ако ( сервер_фд == - 1 ) {
стд::церр << „Креирање утичнице није успело“ ;
повратак -1 ;
}
// друго
// {
// стд::цоут << 'излаз' ;
// }
// везати
стд::цоут << 'хттп//:127.0.0.1:8080' ;
// Даљи код иде овде
повратак 0 ;
}


Излаз овог кода је приложен у следећем:






Ово показује да је сокет успешно креиран у Ц++ за повезивање са веб сервером.

Руковање веб сервером у Ц++

Веб сервер система је подешен да рукује различитим Ц++ концептима као што су сортирање спајањем, линеарно сортирање, итд. Не заборавите да иницијализујете важне мрежне библиотеке. Веб сервер ради на локалној машини (127.0.0.1) и слуша на порту 8080.



Укључите потребне библиотеке у програмском језику Ц++ на следећи начин:

# укључити < појачати / асио.хпп >


Запамтите да креирање веб сервера у Ц++ није лак и дуготрајан процес. Можемо да управљамо долазним везама користећи „асинц_аццепт“.

Одговори сервера у Ц++ коду на веб серверу

Одговор сервера мора бити ХТТП који ради на претраживачу и приказује излаз у ХТМЛ приказу на веб страници. Све библиотеке управљају серверима и обрађују све важеће захтеве.

Везивање и слушање веб сервера

Затим, морамо да знамо о везивању и слушању веб сервера да бисмо лако извршили код на веб страници. Након тога, потребно је да повежемо сокет са датом адресом нашег система, у основи ИП адресом и портом на којем су ови сокети активни. На порту почињемо да ослушкујемо долазне везе.

Морамо да иницијализујемо неколико библиотека за повезивање и повезивање.

Соцкаддр_ин адреса;


Можемо да повежемо сервер. Ако сервер не ради или није повезан, порука се не приказује на веб страници ниједног претраживача.

Прихватање конекција са веб сервером

У овом одељку ћемо научити како можемо да контролишемо ток захтева клијената. Сервер прихвата све захтеве клијената преко ХТТП протокола. Утичница сервера означава величину поруке која је примљена на веб сервер од клијента. Порука садржи везу са серверском утичницом и адресу јасније и јединственије. Проверавамо да ли сервер треба да одговори ако је кориснички сокет пронађен или не. Ако није пронађена корисничка утичница, не можемо прихватити везу са веб сервером.

Методе слања и пријема података са стране корисника и сервера

Након креирања соцкет линкова и прихватања везе, следећа ствар је слање података на страну сервера и примање података са сервера користећи различите кључне речи и изградњу функција које се односе на слање и примање података у Ц++. Овде проверавамо одговор података. Да ли је ово захтев за добијање података или за ПОСТАВЉАЊЕ података са веб сервера? Проверавамо статус одговора на захтев клијента. Привремено чувамо све захтеве клијената у баферу да бисмо приказали поруку или излаз на веб серверу.

Линеарно сортирање у Ц++

Хајде да извршимо линеарно сортирање овде и лако прикажемо резултат линеарног сортирања на веб серверу. Исечак кода линеарног сортирања је приложен у следећем:

#инцлуде<иостреам>
користећи простор имена стд;
воид ЛинеарСеарцх ( инт арр [ ] , инт лен, инт ставка ) {
за ( инт и = 0 < лен;и++ ) {
ако ( арр [ и ] == предмет ) {
цоут << предмет << ' Пронађено у индексу : ' << и;
повратак ;
}
}
цоут << 'Није пронађен' ;
}
инт маин ( ) {
инт арр [ ] = { 10 , 5 , петнаест , двадесет један , - 3 , 7 } ;
инт лен = сизеоф ( арр ) / величина ( арр [ 0 ] ) ;
инт итем = двадесет један ;
ЛинеарСеарцх ( арр, лен, ставка ) ;
повратак 0 ;
}


У овом примеру претражујемо ставку „21“ на којој индекс. Дакле, покрећемо овај код. Излаз овог кода је приложен у следећем:


Овај излаз је сада отворен на веб серверу као у било ком претраживачу као што су Цхроме, Едге итд.

Прекините све везе након приказа излаза

Ово је последњи корак у руковању подацима на веб серверу. Не заборавите да затворите прикључке утичнице након што извршите потребан излаз. Овде затварамо утичницу помоћу функција као што су „цлосе(сервер_ид)“ и „цлосе (цлиент соцкет)“.

На крају покретања сервера, очекивани излаз се приказује на веб страници приступањем адреси као „хттп//лоцалхост:8080“.

Закључак

На крају овог чланка можемо рећи да је једноставно руковање веб сервером у Ц++-у заиста сложено и да му је потребна пуна концентрација за слање и примање захтева ХТТП клијента. Можемо проширити функционалност веб сервера да динамички приказујемо садржај на веб страници. Надамо се да вам је овај чланак од помоћи и да можете покренути ове примере у свом окружењу да бисте разумели кораке који су потребни за креирање једноставног веб сервера у Ц++.