Jednoduchý webový server v C++

Jednoduchy Webovy Server V C



V tomto článku sa dozvieme o webových serveroch v C++. Hlavným účelom webového servera je spracovávať prichádzajúce HTTP požiadavky, spracovávať všetky prichádzajúce požiadavky a na oplátku odpovedať webovým HTML obsahom. Potrebujeme udržiavať webový server v C++ jednoduchým pridaním sieťových knižníc do prostredia C++, ako sú „zásuvky“, aby sme zvládli sieťovú komunikáciu a problémy. Webový server je chrbtovou kosťou internetu a predstavuje spôsob komunikácie medzi používateľmi a hlavnými servermi. Poďme zhodnotiť proces vytvárania jednoduchého webového servera prostredníctvom vhodných príkladov implementácií.

Nastavenie prostredia

Najprv musíme nastaviť všetky požadované možnosti v našom prostredí. Potrebujeme použiť zásuvky na počúvanie prichádzajúcich požiadaviek HTTP. Potom naviažeme soket na konkrétny port na hostiteľskom počítači ako náš systém. Potom, keď klienti zavolajú požiadavku, server počúva tieto prichádzajúce pripojené požiadavky. Server odpovedá na požiadavky používateľa prostredníctvom požiadaviek HTTP, aby preniesol požiadavku používateľa na server. Potom server spracuje požiadavku a vráti HTTP odpovede používateľovi so správnym vytvorením.







Obsluha soketov webového servera

V tejto relácii sa naučíme, že zásuvky vytvárajú komunikáciu medzi rôznymi procesmi, ktoré bežia v našom systéme. Zásuvky sa v podstate používajú na vytvorenie komunikácie alebo spojenia medzi prehliadačom klienta a naším serverom. Pripojenie soketu je vytvorené v C++ spôsobom, ktorý je uvedený v nasledujúcom texte:



Tu budeme definovať knižnice pre zásuvky ako „#include “. V hlavnej funkcii vytvoríme soket inicializáciou „server_fd“. Potom skontrolujeme hodnotu „server_fd“, ktorá obsahuje overenie spojenia akcií. Ak je server mimo prevádzky a nefunguje správne, vráti alebo zobrazí správu „Vytvorenie zásuvky zlyhalo“. V opačnom prípade správa s IP adresou webového servera zobrazí údaje HTML na webovom serveri.



#include
#include
#include
int main ( ) {
int server_fd = socket ( AF_INET, SOCK_STREAM, 0 ) ;
ak ( server_fd == - 1 ) {
std::cerr << 'Vytvorenie zásuvky zlyhalo' ;
vrátiť -1 ;
}
// inak
// {
// std::cout << 'VÝCHOD' ;
// }
// viazať
std::cout << 'http//:127.0.0.1:8080' ;
// Ďalší kód je tu
vrátiť 0 ;
}


Výstup tohto kódu je pripojený v nasledujúcom texte:






To ukazuje, že soket je úspešne vytvorený v C++ na pripojenie k webovému serveru.

Manipulácia s webovým serverom v C++

Webový server systému je nastavený tak, aby zvládal rôzne koncepty C++, ako je zlučovacie triedenie, lineárne triedenie atď. Nezabudnite inicializovať dôležité sieťové knižnice. Webový server beží na lokálnom počítači (127.0.0.1) a počúva na porte 8080.



Zahrňte potrebné knižnice v programovacom jazyku C++ takto:

# zahŕňajú < zosilnenie / asio.hpp >


Pamätajte, že vytvorenie webového servera v C++ nie je jednoduchý a časovo náročný proces. Prichádzajúce pripojenia môžeme spracovať pomocou „async_accept“.

Odpovede servera v kóde C++ na webovom serveri

Odpoveď servera musí byť HTTP, ktorá funguje v prehliadači a zobrazuje výstup v zobrazení HTML na webovej stránke. Všetky knižnice spravujú servery a spracovávajú všetky platné požiadavky.

Viazanie a počúvanie webového servera

Ďalej musíme vedieť o väzbe a počúvaní webového servera, aby sme mohli jednoducho spustiť kód na webovej stránke. Potom musíme zásuvku naviazať na danú adresu nášho systému, v podstate IP adresu a port, na ktorom sú tieto zásuvky aktívne. Na porte začneme počúvať prichádzajúce spojenia.

Potrebujeme inicializovať niekoľko knižníc, ktoré sa majú naviazať a prepojiť.

adresa Sockaddr_in;


Môžeme viazať server. Ak je server mimo prevádzky alebo nie je pripojený, správa sa nezobrazí na webovej stránke žiadneho prehliadača.

Prijímanie pripojení k webovému serveru

V tejto časti sa dozvieme, ako môžeme riadiť tok požiadaviek klienta. Server prijíma všetky požiadavky klientov prostredníctvom protokolu HTTP. Serverový soket označuje veľkosť správy, ktorá je prijatá na webovom serveri od klienta. Správa obsahuje pripojenie soketu servera a adresu jasnejšie a jednoznačnejšie. Skontrolujeme, či server musí odpovedať, či sa užívateľský soket nájde alebo nie. Ak sa nenájde pripojenie soketu používateľa, nemôžeme akceptovať pripojenie k webovému serveru.

Spôsoby odosielania a prijímania údajov od užívateľa a servera

Po vytvorení prepojení soketov a akceptovaní pripojenia je ďalšou vecou odoslanie údajov na stranu servera a prijatie údajov zo servera pomocou rôznych kľúčových slov a vytvorením funkcií, ktoré súvisia s odosielaním a prijímaním údajov v C++. Tu skontrolujeme odozvu údajov. Ide o požiadavku na získanie údajov alebo na POST údajov z webového servera? Kontrolujeme stav odpovede na požiadavku klienta. Všetky požiadavky klientov dočasne ukladáme do vyrovnávacej pamäte na zobrazenie správy alebo výstupu na webovom serveri.

Lineárne triedenie v C++

Tu vykonáme lineárne triedenie a výsledok lineárneho triedenia jednoducho zobrazíme na webovom serveri. Útržok kódu lineárneho triedenia je priložený v nasledujúcom texte:

#include
pomocou menného priestoru std;
void LinearSearch ( int arr [ ] , int len, int položka ) {
pre ( int i = 0 ;i < len;i++ ) {
ak ( arr [ i ] == položka ) {
cout << položka << 'Nájdené v indexe:' << i;
vrátiť ;
}
}
cout << 'Nenájdené' ;
}
int main ( ) {
int arr [ ] = { 10 , 5 , pätnásť , dvadsaťjeden , - 3 , 7 } ;
int len ​​= veľkosť ( arr ) / veľkosť ( arr [ 0 ] ) ;
int položka = dvadsaťjeden ;
Lineárne vyhľadávanie ( arr, len, item ) ;
vrátiť 0 ;
}


V tomto príklade hľadáme položku „21“, v ktorej indexe. Takže spustíme tento kód. Výstup tohto kódu je pripojený v nasledujúcom texte:


Tento výstup je teraz otvorený na webovom serveri ako v akomkoľvek prehliadači, ako je Chrome, Edge atď.

Po zobrazení výstupu ukončite všetky pripojenia

Toto je posledný krok pri spracovaní údajov na webovom serveri. Po vykonaní požadovaného výstupu nezabudnite zatvoriť pripojenia zásuvky. Soket tu zatvoríme pomocou funkcií ako „close(server_id)“ a „close (client socket)“.

Na konci spustenia servera sa očakávaný výstup zobrazí na webovej stránke prístupom k adrese „http//localhost:8080“.

Záver

Na konci tohto článku môžeme povedať, že jednoduchá obsluha webového servera v C++ je skutočne zložitá a vyžaduje si plnú koncentráciu na odoslanie a prijatie požiadavky HTTP klienta. Funkcionalitu webového servera môžeme rozšíriť o dynamické zobrazovanie obsahu na webovej stránke. Dúfajme, že tento článok je pre vás užitočný a tieto príklady môžete spustiť vo svojom prostredí, aby ste pochopili kroky, ktoré sú potrebné na vytvorenie jednoduchého webového servera v C++.