Simpel C++ webserver

Simpel C Webserver



I denne artikel lærer vi om webservere i C++. Hovedformålet med webserveren er at håndtere de ankommende HTTP-anmodninger, behandle alle kommende anmodninger og svare med web-HTML-indholdet til gengæld. Vi er nødt til at vedligeholde webserveren i C++ ved blot at tilføje netværksbibliotekerne i C++-miljøet, som 'sockets', for at håndtere netværkskommunikation og -problemer. En webserver er rygraden i internettet og er en måde at kommunikere mellem brugere og hovedservere på. Lad os evaluere processen med at skabe en simpel webserver gennem korrekte eksempelimplementeringer.

Opsætning af miljøet

Vi skal først opsætte alle de nødvendige muligheder i vores miljø. Vi er nødt til at bruge sockets til at lytte til de indkommende HTTP-anmodninger. Derefter binder vi socket til den specifikke port på værtsmaskinen som vores system. Efter det, når klienterne ringer efter anmodningen, lytter serveren til disse indkommende forbundne anmodninger. Serveren reagerer på brugerens anmodninger gennem HTTP-anmodninger for at hente brugerens anmodning til serveren. Derefter håndterer serveren anmodningen og returnerer HTTP-svarene til brugeren med korrekt udformning.







Sockets Håndtering af webserveren

I denne session vil vi lære, at sockets skaber kommunikation mellem forskellige processer, der kører i vores system. Sockets bruges som udgangspunkt til at skabe kommunikationen eller forbindelsen mellem klientens browser og vores server. Tilslutningen af ​​stikket er bygget i C++ på den måde, der er nævnt i det følgende:



Her vil vi definere bibliotekerne for sockets som '#include '. I hovedfunktionen opretter vi socket ved at initialisere 'server_fd'. Derefter tjekker vi værdien af ​​'server_fd', der indeholder lagerforbindelsesvalideringen. Hvis serveren er nede og ikke fungerer fint, vender den tilbage eller viser meddelelsen 'Socket oprettelse mislykkedes'. Ellers vil meddelelsen, der har webserverens IP-adresse, vise HTML-data på webserveren.



#include
#include
#include
int main ( ) {
int server_fd = socket ( AF_INET, SOCK_STREAM, 0 ) ;
hvis ( server_fd == - 1 ) {
std::cerr << 'Socket-oprettelse mislykkedes' ;
Vend tilbage -1 ;
}
// andet
// {
// std::cout << 'Afslut' ;
// }
// binde
std::cout << 'http//:127.0.0.1:8080' ;
// Yderligere kode kommer her
Vend tilbage 0 ;
}


Outputtet af denne kode er vedhæftet i følgende:






Dette viser, at socket er oprettet med succes i C++ for at oprette forbindelse til webserveren.

Webserverhåndtering i C++

Systemets webserver er sat op til at håndtere de forskellige C++ koncepter som flettesortering, lineær sortering osv. Husk at initialisere de vigtige netværksbiblioteker. Webserveren kører på den lokale maskine (127.0.0.1) og lytter på port 8080.



Medtag de nødvendige biblioteker i C++ programmeringssproget som følger:

# omfatte < boost / asio.hpp >


Husk at oprettelse af en webserver i C++ ikke er en nem og tidskrævende proces. Vi kan håndtere de indgående forbindelser ved hjælp af 'async_accept'.

Serversvar i C++-koden på webserveren

Serversvaret skal være HTTP, som virker på browseren og viser outputtet på HTML-visningen på websiden. Alle bibliotekerne administrerer serverne og håndterer alle gyldige anmodninger.

Binding og aflytning af webserveren

Dernæst skal vi vide om binding og lytning af webserveren for nemt at udføre koden på websiden. Derefter skal vi binde socket til den givne adresse på vores system, dybest set IP-adressen og porten, som disse sockets er aktive på. På porten begynder vi at lytte efter indgående forbindelser.

Vi skal initialisere de få biblioteker til at binde og linke.

Sockaddr_in adresse;


Vi kan binde serveren. Hvis serveren er nede eller ikke tilsluttet, vises meddelelsen ikke på nogen browsers webside.

Accept af forbindelserne til webserveren

I dette afsnit lærer vi, hvordan vi kan kontrollere flowet af klientens anmodninger. Serveren accepterer alle klientanmodninger via HTTP-protokollen. Serversocket angiver størrelsen af ​​den besked, der modtages på webserveren fra klienten. Meddelelsen indeholder serversockets forbindelse og adresse mere tydeligt og entydigt. Vi tjekker, om serveren skal svare, hvis brugersocket findes eller ej. Hvis brugersocket-forbindelsen ikke findes, kan vi ikke acceptere forbindelsen til en webserver.

Metoder til afsendelse og modtagelse af data fra bruger- og serverenden

Efter at have oprettet socket-links og accepteret forbindelsen, er den næste ting at sende dataene til serversiden og modtage dataene fra serveren ved hjælp af forskellige nøgleord og opbygge de funktioner, der er relateret til at sende og modtage dataene i C++. Her tjekker vi dataenes respons. Er denne anmodning for at få dataene eller at POST dataene fra webserveren? Vi kontrollerer svarstatus for kundens anmodning. Vi gemmer midlertidigt alle klientanmodninger på bufferen for at vise beskeden eller outputtet på webserveren.

Lineær sortering i C++

Lad os udføre den lineære sortering her og vise resultatet af lineær sortering på webserveren nemt. Kodestykket for den lineære sortering er vedhæftet i følgende:

#include
bruger navneområde std;
ugyldig LinearSearch ( int arr [ ] , int len, int vare ) {
til ( int jeg = 0 ;jeg < len;i++ ) {
hvis ( arr [ jeg ] == vare ) {
cout << vare << ' Fundet i indeks : ' << jeg;
Vend tilbage ;
}
}
cout << 'Ikke fundet' ;
}
int main ( ) {
int arr [ ] = { 10 , 5 , femten , enogtyve , - 3 , 7 } ;
int len ​​= størrelse af ( arr ) / størrelse på ( arr [ 0 ] ) ;
int element = enogtyve ;
Lineær søgning ( arr, len, vare ) ;
Vend tilbage 0 ;
}


I dette eksempel søger vi efter elementet '21' ved hvilket indeks. Så vi kører denne kode. Outputtet af denne kode er vedhæftet i følgende:


Dette output er nu åbent på webserveren som i enhver browser som Chrome, Edge osv.

Afslut alle forbindelser efter outputdisplayet

Dette er det sidste trin i håndteringen af ​​data på en webserver. Husk at lukke stikforbindelserne efter at have udført den nødvendige udgang. Vi lukker stikket her ved hjælp af funktioner som 'close(server_id)' og 'close (client socket)'.

Når serveren er færdig, vises det forventede output på websiden ved at få adgang til adressen som 'http//localhost:8080'.

Konklusion

I slutningen af ​​denne artikel kan vi sige, at den simple webserverhåndtering i C++ er virkelig kompleks og kræver fuld koncentration for at sende og modtage HTTP-klientens anmodning. Vi kan udvide webserverens funktionalitet til at vise indholdet dynamisk på websiden. Forhåbentlig er denne artikel nyttig for dig, og du kan køre disse eksempler på dit miljø for at forstå de trin, der kræves for at oprette en simpel webserver i C++.