Lihtne C++ veebiserver

Lihtne C Veebiserver



Selles artiklis käsitleme veebiservereid C++ keeles. Veebiserveri põhieesmärk on käsitleda saabuvaid HTTP päringuid, töödelda kõiki saabuvaid päringuid ja vastata vastutasuks veebi HTML-i sisuga. Peame veebiserverit C++-s hooldama, lisades võrgusuhtluse ja -probleemide lahendamiseks lihtsalt C++-keskkonda võrguteegid, nagu 'pesad'. Veebiserver on Interneti selgroog ning kasutajate ja peamiste serverite vahelise suhtluse viis. Hindame lihtsa veebiserveri loomise protsessi õigete näidisrakenduste kaudu.

Keskkonna seadistamine

Kõigepealt peame oma keskkonnas seadistama kõik vajalikud valikud. Peame sissetulevate HTTP-päringute kuulamiseks kasutama pistikupesasid. Pärast seda seome pesa oma süsteemina hostimasina konkreetse pordiga. Pärast seda, kui kliendid päringut nõuavad, kuulab server neid sissetulevaid ühendatud päringuid. Server vastab kasutaja päringutele HTTP-päringute kaudu, et tuua kasutaja päring serverisse. Pärast seda käsitleb server päringut ja tagastab kasutajale HTTP vastused nõuetekohase töötlusega.







Veebiserveri pistikupesade haldamine

Sellel seansil saame teada, et pistikupesad loovad suhtluse meie süsteemis töötavate erinevate protsesside vahel. Pistikupesasid kasutatakse põhimõtteliselt side või ühenduse loomiseks kliendi brauseri ja meie serveri vahel. Pistikupesa ühendus on sisse ehitatud C++ keeles järgmiselt:



Siin määratleme soklite teegid kujul '#include '. Põhifunktsioonis loome sokli, lähtestades serveri_fd. Pärast seda kontrollime aktsiaühenduse valideerimist sisaldava serveri_fd väärtust. Kui server on maas ja ei tööta korralikult, tagastab või kuvab see teade „Pistikupesa loomine ebaõnnestus”. Vastasel juhul näitab sõnum, millel on veebiserveri IP-aadress, HTML-i andmeid veebiserveris.



#include
#include
#include
int main ( ) {
int server_fd = pesa ( AF_INET, SOCK_STREAM, 0 ) ;
kui ( server_fd == - 1 ) {
std::cerr << 'Pistikupesa loomine ebaõnnestus' ;
tagasi -1 ;
}
// muidu
// {
// std::cout << 'väljumine' ;
// }
// siduda
std::cout << 'http//:127.0.0.1:8080' ;
// Täiendav kood on siin
tagasi 0 ;
}


Selle koodi väljund on lisatud järgmisele:






See näitab, et pesa on veebiserveriga ühenduse loomiseks C++-s edukalt loodud.

Veebiserveri haldamine C++ keeles

Süsteemi veebiserver on seadistatud käsitlema erinevaid C++ kontseptsioone, nagu liitmise sortimine, lineaarne sortimine jne. Ärge unustage lähtestada olulised võrguteegid. Veebiserver töötab kohalikus masinas (127.0.0.1) ja kuulab porti 8080.



Kaasake C++ programmeerimiskeelde vajalikud teegid järgmiselt:

# sisaldama < hoogustada / asio.hpp >


Pidage meeles, et veebiserveri loomine C++ keeles ei ole lihtne ja aeganõudev protsess. Saame sissetulevaid ühendusi hallata kasutades 'async_accept'.

Serveri vastused veebiserveri C++ koodis

Serveri vastus peab olema HTTP, mis töötab brauseris ja näitab väljundit veebilehe HTML-vaates. Kõik teegid haldavad servereid ja töötlevad kõiki kehtivaid taotlusi.

Veebiserveri sidumine ja kuulamine

Järgmiseks peame teadma veebiserveri sidumise ja kuulamise kohta, et veebilehel koodi hõlpsalt käivitada. Pärast seda peame siduma sokli meie süsteemi antud aadressiga, põhimõtteliselt IP-aadressi ja pordiga, millel need pistikupesad on aktiivsed. Sadamas hakkame kuulama sissetulevaid ühendusi.

Peame initsialiseerima mõned sidumis- ja linkitavad teegid.

Sockaddr_in aadress;


Saame serveri siduda. Kui server on maas või pole ühendatud, ei kuvata teadet ühegi brauseri veebilehel.

Veebiserveriga ühenduste aktsepteerimine

Selles jaotises õpime, kuidas saame kontrollida kliendi päringute voogu. Server aktsepteerib kõiki klientide päringuid HTTP-protokolli kaudu. Serveri pesa näitab kliendilt veebiserverisse vastuvõetud sõnumi suurust. Sõnum sisaldab serveri pistikupesa ühendust ja aadressi selgemalt ja ainulaadsemalt. Kontrollime, kas server peab vastama, kui kasutaja sokkel leitakse või mitte. Kui kasutaja pesaühendust ei leita, ei saa me ühendust veebiserveriga aktsepteerida.

Kasutajalt ja serverilt andmete saatmise ja vastuvõtmise meetodid

Peale pesalinkide loomist ja ühenduse vastuvõtmist on järgmisena saata andmed serveri poolele ja serverist saadud andmed erinevate märksõnade abil ning C++ keeles andmete saatmise ja vastuvõtmisega seotud funktsioonide ülesehitamine. Siin kontrollime andmete vastust. Kas see taotlus on andmete hankimiseks või andmete postitamiseks veebiserverist? Kontrollime kliendi päringu vastuse olekut. Salvestame ajutiselt kõik kliendipäringud puhvris sõnumi või väljundi kuvamiseks veebiserveris.

Lineaarne sortimine C++ keeles

Teeme siin lineaarse sortimise ja kuvame lineaarse sortimise tulemuse veebiserveris lihtsalt. Lineaarse sortimise koodilõik on lisatud järgmiselt:

#include
kasutades nimeruumi std;
tühine Lineaarne otsing ( int arr [ ] , int len, int item ) {
jaoks ( int i = 0 ;i < len;i++ ) {
kui ( arr [ i ] == ese ) {
cout << üksus << 'Leitud indeksist:' << i;
tagasi ;
}
}
cout << 'Ei leitud' ;
}
int main ( ) {
int arr [ ] = { 10 , 5 , viisteist , kakskümmend üks ,- 3 , 7 } ;
int len ​​= suurus ( arr ) / suurus ( arr [ 0 ] ) ;
int item = kakskümmend üks ;
Lineaarne otsing ( arr, len, ese ) ;
tagasi 0 ;
}


Selles näites otsime selle indeksiga üksust '21'. Niisiis, me käivitame selle koodi. Selle koodi väljund on lisatud järgmisele:


See väljund on nüüd veebiserveris avatud nagu igas brauseris, nagu Chrome, Edge jne.

Katkestage kõik ühendused pärast väljundkuva

See on viimane samm veebiserveris olevate andmete haldamisel. Ärge unustage sulgeda pistikupesa ühendused pärast vajaliku väljundi sooritamist. Suleme sokli siin, kasutades selliseid funktsioone nagu 'close(server_id)' ja 'close (kliendisokk)'.

Serveri käitamise lõpus kuvatakse veebilehel eeldatav väljund, kui pääsete juurde aadressile 'http//localhost:8080'.

Järeldus

Selle artikli lõpus võime öelda, et lihtne veebiserveri käsitsemine C++ keeles on tõesti keeruline ja vajab täielikku keskendumist HTTP-kliendi päringu saatmiseks ja vastuvõtmiseks. Saame laiendada veebiserveri funktsionaalsust, et kuvada veebilehel sisu dünaamiliselt. Loodetavasti on see artikkel teile abiks ja saate neid näiteid oma keskkonnas käivitada, et mõista samme, mida on vaja lihtsa veebiserveri loomiseks C++-s.