Enkel C++ Web Server

Enkel C Web Server



I denne artikkelen vil vi lære om webservere i C++. Hovedformålet med webserveren er å håndtere de ankommende HTTP-forespørslene, behandle alle kommende forespørsler og svare med web-HTML-innholdet i retur. Vi må vedlikeholde webserveren i C++ ved å bare legge til nettverksbibliotekene i C++-miljøet, som 'sockets', for å håndtere nettverkskommunikasjon og -problemer. En webserver er ryggraden i internett og er en måte å kommunisere på mellom brukere og hovedservere. La oss evaluere prosessen med å lage en enkel webserver gjennom riktige eksempelimplementeringer.

Sette opp miljøet

Vi må først sette opp alle nødvendige alternativer i miljøet vårt. Vi må bruke kontaktene for å lytte til de innkommende HTTP-forespørslene. Etter det binder vi kontakten til den spesifikke porten på vertsmaskinen som vårt system. Etter det, når klientene ringer etter forespørselen, lytter serveren til disse innkommende tilkoblede forespørslene. Serveren svarer på brukerens forespørsler gjennom HTTP-forespørsler for å hente brukerens forespørsel til serveren. Etter det håndterer serveren forespørselen og returnerer HTTP-svarene til brukeren med riktig utforming.







Sockets Håndtering av webserveren

I denne økten skal vi lære at sockets skaper kommunikasjon mellom ulike prosesser som kjører i systemet vårt. Stikkontaktene brukes i utgangspunktet til å skape kommunikasjon eller forbindelse mellom klientens nettleser og serveren vår. Tilkoblingen av stikkontakten er bygget i C++ på den måten som er nevnt i følgende:



Her vil vi definere bibliotekene for sockets som '#include '. I hovedfunksjonen lager vi kontakten ved å initialisere 'server_fd'. Etter det sjekker vi verdien av 'server_fd' som inneholder lagerforbindelsesvalideringen. Hvis serveren er nede og ikke fungerer bra, returnerer den eller viser meldingen 'Socket creation failed'. Ellers vil meldingen som har IP-adressen til webserveren vise dataene til HTML på webserveren.



#include
#include
#include
int main ( ) {
int server_fd = socket ( AF_INET, SOCK_STREAM, 0 ) ;
hvis ( server_fd == - 1 ) {
std::cerr << 'Socketoppretting mislyktes' ;
komme tilbake -1 ;
}
// ellers
// {
// std::cout << 'exit' ;
// }
// binde
std::cout << 'http//:127.0.0.1:8080' ;
// Ytterligere kode kommer her
komme tilbake 0 ;
}


Utdataene fra denne koden er vedlagt i følgende:






Dette viser at kontakten er opprettet i C++ for å koble til webserveren.

Webserverhåndtering i C++

Systemets webserver er satt opp for å håndtere de forskjellige C++-konseptene som flettsortering, lineær sortering osv. Husk å initialisere de viktige nettverksbibliotekene. Nettserveren kjører på den lokale maskinen (127.0.0.1) og lytter på port 8080.



Inkluder de nødvendige bibliotekene i C++ programmeringsspråket som følger:

# inkludere < øke / asio.hpp >


Husk at å lage en webserver i C++ ikke er en enkel og tidkrevende prosess. Vi kan håndtere de innkommende forbindelsene ved å bruke 'async_accept'.

Serverresponser i C++-koden på webserveren

Serverresponsen må være HTTP som fungerer på nettleseren og viser utdataene på HTML-visningen på nettsiden. Alle bibliotekene administrerer serverne og håndterer alle gyldige forespørsler.

Binding og lytting av webserveren

Deretter må vi vite om bindingen og lyttingen til webserveren for å utføre koden på nettsiden enkelt. Etter det må vi binde kontakten til den gitte adressen til systemet vårt, i utgangspunktet IP-adressen og porten som disse kontaktene er aktive på. På porten begynner vi å lytte etter innkommende tilkoblinger.

Vi må initialisere de få bibliotekene for å binde og koble.

Sockaddr_in-adresse;


Vi kan binde serveren. Hvis serveren er nede eller ikke er tilkoblet, vises ikke meldingen på nettsiden til noen nettleser.

Godta tilkoblingene til webserveren

I denne delen vil vi lære hvordan vi kan kontrollere flyten av klientens forespørsler. Serveren godtar alle klientforespørsler gjennom HTTP-protokollen. Serversocket angir størrelsen på meldingen som mottas på webserveren fra klienten. Meldingen inneholder serversocket-tilkoblingen og adressen tydeligere og mer unikt. Vi sjekker om serveren trenger å svare om brukerkontakten blir funnet eller ikke. Hvis brukersocket-tilkoblingen ikke blir funnet, kan vi ikke godta tilkoblingen til en webserver.

Metoder for å sende og motta data fra bruker- og serverenden

Etter å ha opprettet socketlinkene og akseptert tilkoblingen, er neste ting å sende dataene til serversiden og motta dataene fra serveren ved å bruke forskjellige nøkkelord og bygge funksjonene som er relatert til å sende og motta dataene i C++. Her sjekker vi responsen til dataene. Er denne forespørselen for å få dataene eller å POSTE dataene fra webserveren? Vi sjekker svarstatusen til kundens forespørsel. Vi lagrer midlertidig alle klientforespørslene på bufferen for å vise meldingen eller utdata på webserveren.

Lineær sortering i C++

La oss utføre den lineære sorteringen her og vise resultatet av lineær sortering på nettserveren enkelt. Kodebiten for den lineære sorteringen er vedlagt i følgende:

#include
bruker navneområde std;
ugyldig LinearSearch ( int arr [ ] , int len, int vare ) {
til ( int Jeg = 0 ;Jeg < len;i++ ) {
hvis ( arr [ Jeg ] == element ) {
cout << punkt << ' Funnet i indeks : ' << Jeg;
komme tilbake ;
}
}
cout << 'Ikke funnet' ;
}
int main ( ) {
int arr [ ] = { 10 , 5 , femten , tjueen , - 3 , 7 } ;
int len ​​= størrelsen på ( arr ) / størrelsen av ( arr [ 0 ] ) ;
int element = tjueen ;
Lineært søk ( arr, len, vare ) ;
komme tilbake 0 ;
}


I dette eksemplet søker vi etter elementet '21' ved hvilken indeks. Så vi kjører denne koden. Utdataene fra denne koden er vedlagt i følgende:


Denne utgangen er nå åpen på nettserveren som i alle nettlesere som Chrome, Edge, etc.

Avslutt alle tilkoblinger etter utgangsdisplayet

Dette er det siste trinnet i håndteringen av dataene på en webserver. Husk å lukke stikkontakten etter å ha utført den nødvendige utgangen. Vi lukker stikkontakten her ved å bruke funksjonene som 'close(server_id)' og 'close (client socket)'.

På slutten av kjøringen av serveren vises den forventede utgangen på nettsiden ved å gå til adressen 'http//localhost:8080'.

Konklusjon

På slutten av denne artikkelen kan vi si at den enkle webserverhåndteringen i C++ er veldig kompleks og trenger full konsentrasjon for å sende og motta HTTP-klientens forespørsel. Vi kan utvide webserverfunksjonaliteten for å vise innholdet dynamisk på nettsiden. Forhåpentligvis er denne artikkelen nyttig for deg, og du kan kjøre disse eksemplene på miljøet ditt for å forstå trinnene som kreves for å lage en enkel webserver i C++.