Jednostavan C++ web poslužitelj

Jednostavan C Web Posluzitelj



U ovom članku naučit ćemo o web poslužiteljima u C++. Glavna svrha web poslužitelja je rukovanje pristiglim HTTP zahtjevima, obrada svih dolazećih zahtjeva i odgovor s web HTML sadržajem zauzvrat. Moramo održavati web poslužitelj u C++ samo dodavanjem mrežnih biblioteka u C++ okruženju, kao što su 'utičnice', za rješavanje mrežnih komunikacija i problema. Web poslužitelj je okosnica interneta i način je komunikacije između korisnika i glavnih poslužitelja. Procijenimo proces stvaranja jednostavnog web poslužitelja kroz odgovarajuće implementacije primjera.

Postavljanje okoline

Prvo moramo postaviti sve potrebne opcije u našem okruženju. Moramo koristiti utičnice za slušanje dolaznih HTTP zahtjeva. Nakon toga povezujemo utičnicu s određenim priključkom na glavnom računalu kao naš sustav. Nakon toga, kada klijenti pozovu za zahtjev, poslužitelj sluša te dolazne povezane zahtjeve. Poslužitelj odgovara na zahtjeve korisnika putem HTTP zahtjeva kako bi dohvatio zahtjev korisnika na poslužitelj. Nakon toga, poslužitelj obrađuje zahtjev i vraća HTTP odgovore korisniku uz pravilnu izradu.







Rukovanje utičnicama web poslužitelja

U ovoj ćemo sesiji naučiti da utičnice stvaraju komunikaciju između različitih procesa koji se izvode u našem sustavu. Utičnice se u osnovi koriste za stvaranje komunikacije ili veze između klijentovog preglednika i našeg poslužitelja. Povezivanje utičnice izgrađeno je u C++ na način koji je spomenut u sljedećem:



Ovdje ćemo definirati biblioteke za utičnice kao “#include ”. U glavnoj funkciji stvaramo utičnicu inicijaliziranjem 'server_fd'. Nakon toga provjeravamo vrijednost 'server_fd' koja sadrži provjeru valjanosti veze sa dionicom. Ako poslužitelj ne radi i ne radi dobro, vraća ili prikazuje poruku 'Stvaranje utičnice nije uspjelo'. U suprotnom, poruka koja ima IP adresu web poslužitelja prikazat će podatke HTML-a na web poslužitelju.



#include
#include
#include
int glavni ( ) {
int poslužitelj_fd = utičnica ( AF_INET, SOCK_STREAM, 0 ) ;
ako ( server_fd == - 1 ) {
std::cerr << 'Stvaranje utičnice nije uspjelo' ;
povratak -1 ;
}
// drugo
// {
// std::cout << 'Izlaz' ;
// }
// vezati
std::cout << 'http//:127.0.0.1:8080' ;
// Daljnji kod ide ovdje
povratak 0 ;
}


Izlaz ovog koda je priložen u sljedećem:






Ovo pokazuje da je utičnica uspješno stvorena u C++ za povezivanje s web poslužiteljem.

Rukovanje web poslužiteljem u C++

Web poslužitelj sustava postavljen je za rukovanje različitim C++ konceptima kao što je sortiranje spajanjem, linearno sortiranje itd. Ne zaboravite pokrenuti važne mrežne biblioteke. Web poslužitelj radi na lokalnom računalu (127.0.0.1) i sluša na portu 8080.



Uključite potrebne biblioteke u programski jezik C++ kako slijedi:

# uključiti < pojačati / asio.hpp >


Upamtite da stvaranje web poslužitelja u C++ nije jednostavan i dugotrajan proces. Možemo obraditi dolazne veze koristeći 'async_accept'.

Odgovori poslužitelja u C++ kodu na web poslužitelju

Odgovor poslužitelja mora biti HTTP koji radi na pregledniku i prikazuje izlaz u HTML prikazu na web stranici. Sve knjižnice upravljaju poslužiteljima i obrađuju sve važeće zahtjeve.

Vezanje i slušanje web poslužitelja

Zatim, moramo znati o vezivanju i slušanju web poslužitelja kako bismo jednostavno izvršili kod na web stranici. Nakon toga, moramo vezati socket na zadanu adresu našeg sustava, u osnovi IP adresu i port na kojem su ti socketi aktivni. Na portu počinjemo osluškivati ​​dolazne veze.

Moramo inicijalizirati nekoliko biblioteka za vezanje i povezivanje.

Sockaddr_in adresa;


Možemo vezati poslužitelj. Ako poslužitelj ne radi ili nije povezan, poruka se ne prikazuje na web stranici nijednog preglednika.

Prihvaćanje veza s web poslužiteljem

U ovom odjeljku naučit ćemo kako možemo kontrolirati tijek klijentovih zahtjeva. Poslužitelj prihvaća sve klijentske zahtjeve putem HTTP protokola. Utičnica poslužitelja označava veličinu poruke koja je primljena na web poslužitelju od klijenta. Poruka sadrži vezu i adresu utičnice poslužitelja jasnije i jedinstvenije. Provjeravamo treba li poslužitelj odgovoriti ako je korisnička utičnica pronađena ili ne. Ako se veza korisničkog soketa ne pronađe, ne možemo prihvatiti vezu s web poslužiteljem.

Metode slanja i primanja podataka od korisnika i poslužitelja

Nakon stvaranja poveznica utičnica i prihvaćanja veze, sljedeća stvar je slanje podataka na stranu poslužitelja i primanje podataka od poslužitelja pomoću različitih ključnih riječi i izgradnja funkcija koje se odnose na slanje i primanje podataka u C++. Ovdje provjeravamo odziv podataka. Je li to zahtjev za dobivanje podataka ili za POST podatke s web poslužitelja? Provjeravamo status odgovora na zahtjev klijenta. Privremeno pohranjujemo sve klijentske zahtjeve u međuspremnik kako bismo prikazali poruku ili izlaz na web poslužitelju.

Linearno sortiranje u C++

Izvršimo linearno sortiranje ovdje i jednostavno prikažimo rezultat linearnog sortiranja na web poslužitelju. Isječak koda linearnog sortiranja priložen je u nastavku:

#include
korištenje imenskog prostora std;
void LinearSearch ( int arr [ ] , int len, int stavka ) {
za ( int ja = 0 ;i < len;i++ ) {
ako ( arr [ ja ] == stavka ) {
cout << artikal << ' Pronađeno na indeksu : ' << ja;
povratak ;
}
}
cout << 'Nije pronađeno' ;
}
int glavni ( ) {
int arr [ ] = { 10 , 5 , petnaest , dvadeset i jedan , - 3 , 7 } ;
int len ​​= sizeof ( arr ) / veličina ( arr [ 0 ] ) ;
int stavka = dvadeset i jedan ;
LinearSearch ( arr, len, stavka ) ;
povratak 0 ;
}


U ovom primjeru tražimo stavku '21' na kojem indeksu. Dakle, pokrećemo ovaj kod. Izlaz ovog koda je priložen u sljedećem:


Ovaj izlaz je sada otvoren na web poslužitelju kao u bilo kojem pregledniku kao što su Chrome, Edge itd.

Prekinite sve veze nakon prikaza izlaza

Ovo je posljednji korak u rukovanju podacima na web poslužitelju. Ne zaboravite zatvoriti veze utičnica nakon izvođenja traženog izlaza. Ovdje zatvaramo utičnicu koristeći funkcije kao što su 'close(server_id)' i 'close (client socket)'.

Na kraju rada poslužitelja, očekivani izlaz se prikazuje na web stranici pristupom adresi kao “http//localhost:8080”.

Zaključak

Na kraju ovog članka možemo reći da je jednostavno rukovanje web poslužiteljem u C++-u zaista složeno i zahtijeva punu koncentraciju za slanje i primanje zahtjeva HTTP klijenta. Možemo proširiti funkcionalnost web poslužitelja za dinamički prikaz sadržaja na web stranici. Nadamo se da vam je ovaj članak od pomoći i da možete pokrenuti ove primjere u svom okruženju da biste razumjeli korake koji su potrebni za stvaranje jednostavnog web poslužitelja u C++.