Jednoduchý webový server v C++

Jednoduchy Webovy Server V C



V tomto článku se seznámíme s webovými servery v C++. Hlavním účelem webového serveru je zpracovávat příchozí požadavky HTTP, zpracovávat všechny přicházející požadavky a na oplátku odpovídat webovým HTML obsahem. Potřebujeme udržovat webový server v C++ pouhým přidáním síťových knihoven do prostředí C++, jako jsou „sokety“, aby se zvládla síťová komunikace a problémy. Webový server je páteří internetu a představuje způsob komunikace mezi uživateli a hlavními servery. Pojďme zhodnotit proces vytváření jednoduchého webového serveru pomocí vhodných příkladů implementací.

Nastavení prostředí

Nejprve musíme nastavit všechny požadované možnosti v našem prostředí. Musíme využít sokety k naslouchání příchozím HTTP požadavkům. Poté navážeme soket na konkrétní port na hostitelském počítači jako náš systém. Poté, když klienti volají o požadavek, server naslouchá těmto příchozím připojeným požadavkům. Server odpovídá na požadavky uživatele prostřednictvím požadavků HTTP, aby načetl požadavek uživatele na server. Poté server zpracuje požadavek a vrátí HTTP odpovědi uživateli se správným vytvořením.







Obsluha soketů webového serveru

V této relaci se naučíme, že sockety vytvářejí komunikaci mezi různými procesy, které běží v našem systému. Sokety se v podstatě používají k vytvoření komunikace nebo spojení mezi prohlížečem klienta a naším serverem. Připojení soketu je vytvořeno v C++ způsobem, který je uveden v následujícím textu:



Zde definujeme knihovny pro sockety jako „#include “. V hlavní funkci vytvoříme soket inicializací „server_fd“. Poté zkontrolujeme hodnotu „server_fd“, která obsahuje ověření akciového spojení. Pokud je server mimo provoz a nefunguje správně, vrátí nebo zobrazí zprávu „Vytvoření soketu se nezdařilo“. Jinak zpráva, která má IP adresu webového serveru, zobrazí data HTML na webovém serveru.



#include
#include
#include
int main ( ) {
int server_fd = socket ( AF_INET, SOCK_STREAM, 0 ) ;
-li ( server_fd == - 1 ) {
std::cerr << 'Vytvoření zásuvky se nezdařilo' ;
vrátit se -1 ;
}
// jiný
// {
// std::cout << 'výstup' ;
// }
// svázat
std::cout << 'http//:127.0.0.1:8080' ;
// Další kód je zde
vrátit se 0 ;
}


Výstup tohoto kódu je připojen v následujícím textu:






To ukazuje, že soket je úspěšně vytvořen v C++ pro připojení k webovému serveru.

Práce s webovým serverem v C++

Webový server systému je nastaven tak, aby zvládal různé koncepty C++, jako je slučovací třídění, lineární třídění atd. Nezapomeňte inicializovat důležité síťové knihovny. Webový server běží na místním počítači (127.0.0.1) a naslouchá na portu 8080.



Zahrňte potřebné knihovny v programovacím jazyce C++ takto:

# zahrnout < posílení / asio.hpp >


Pamatujte, že vytvoření webového serveru v C++ není snadný a časově náročný proces. Příchozí připojení můžeme zpracovat pomocí „async_accept“.

Odezvy serveru v kódu C++ na webovém serveru

Odpověď serveru musí být HTTP, která funguje v prohlížeči a zobrazuje výstup v zobrazení HTML na webové stránce. Všechny knihovny spravují servery a zpracovávají všechny platné požadavky.

Vazba a poslech webového serveru

Dále potřebujeme vědět o vazbě a naslouchání webového serveru, abychom mohli snadno spustit kód na webové stránce. Poté potřebujeme navázat socket na danou adresu našeho systému, v podstatě IP adresu a port, na kterém jsou tyto sockety aktivní. Na portu začneme naslouchat příchozím spojením.

Potřebujeme inicializovat několik knihoven, které se mají svázat a propojit.

adresa Sockaddr_in;


Můžeme svázat server. Pokud je server mimo provoz nebo není připojen, zpráva se nezobrazí na webové stránce žádného prohlížeče.

Přijetí připojení k webovému serveru

V této části se naučíme, jak můžeme řídit tok požadavků klienta. Server přijímá všechny požadavky klientů prostřednictvím protokolu HTTP. Serverový soket udává velikost zprávy přijaté na webový server od klienta. Zpráva obsahuje připojení a adresu soketu serveru jasněji a jednoznačněji. Zkontrolujeme, zda server musí reagovat, pokud je uživatelský soket nalezen nebo ne. Pokud není nalezeno připojení k uživatelskému soketu, nemůžeme přijmout připojení k webovému serveru.

Způsoby odesílání a přijímání dat od uživatele a konce serveru

Po vytvoření soketových propojení a přijetí připojení je další věcí odeslání dat na stranu serveru a příjem dat ze serveru pomocí různých klíčových slov a vytvoření funkcí, které souvisejí s odesíláním a přijímáním dat v C++. Zde zkontrolujeme odezvu dat. Jedná se o požadavek na získání dat nebo na POST dat z webového serveru? Kontrolujeme stav odpovědi na požadavek klienta. Všechny požadavky klientů dočasně ukládáme do vyrovnávací paměti, abychom zobrazili zprávu nebo výstup na webovém serveru.

Lineární řazení v C++

Provedeme zde lineární třídění a výsledek lineárního třídění snadno zobrazíme na webovém serveru. Fragment kódu lineárního řazení je připojen v následujícím textu:

#include
pomocí jmenného prostoru std;
void LinearSearch ( int arr [ ] , int len, int item ) {
pro ( int i = 0 ;i < len;i++ ) {
-li ( arr [ i ] == položka ) {
cout << položka << ' Nalezeno v indexu : ' << i;
vrátit se ;
}
}
cout << 'Nenalezeno' ;
}
int main ( ) {
int arr [ ] = { 10 , 5 , patnáct , dvacet jedna ,- 3 , 7 } ;
int len ​​= velikost ( arr ) / velikost ( arr [ 0 ] ) ;
int položka = dvacet jedna ;
Lineární vyhledávání ( arr, len, item ) ;
vrátit se 0 ;
}


V tomto příkladu hledáme položku „21“ na kterém indexu. Spustíme tedy tento kód. Výstup tohoto kódu je připojen v následujícím textu:


Tento výstup je nyní otevřený na webovém serveru jako v jakémkoli prohlížeči, jako je Chrome, Edge atd.

Po zobrazení výstupu ukončete všechna připojení

Toto je poslední krok při manipulaci s daty na webovém serveru. Po provedení požadovaného výstupu nezapomeňte uzavřít připojení zásuvek. Soket zde uzavřeme pomocí funkcí jako „close(server_id)“ a „close (client socket)“.

Na konci běhu serveru se očekávaný výstup zobrazí na webové stránce přístupem k adrese „http//localhost:8080“.

Závěr

Na konci tohoto článku můžeme říci, že jednoduchá obsluha webového serveru v C++ je opravdu složitá a vyžaduje plnou koncentraci na odesílání a přijímání požadavku HTTP klienta. Můžeme rozšířit funkcionalitu webového serveru o dynamické zobrazení obsahu na webové stránce. Doufejme, že tento článek je pro vás užitečný a tyto příklady můžete spustit ve svém prostředí, abyste pochopili kroky, které jsou nutné k vytvoření jednoduchého webového serveru v C++.