Einfacher C++-Webserver

Einfacher C Webserver



In diesem Artikel lernen wir etwas über Webserver in C++. Der Hauptzweck des Webservers besteht darin, die ankommenden HTTP-Anfragen zu verarbeiten, alle kommenden Anfragen zu verarbeiten und im Gegenzug mit dem Web-HTML-Inhalt zu antworten. Wir müssen den Webserver in C++ verwalten, indem wir einfach die Netzwerkbibliotheken in der C++-Umgebung, wie „Sockets“, hinzufügen, um die Netzwerkkommunikation und -probleme zu verwalten. Ein Webserver ist das Rückgrat des Internets und dient der Kommunikation zwischen Benutzern und Hauptservern. Lassen Sie uns den Prozess der Erstellung eines einfachen Webservers anhand geeigneter Beispielimplementierungen bewerten.

Einrichten der Umgebung

Wir müssen zunächst alle erforderlichen Optionen in unserer Umgebung einrichten. Wir müssen die Sockets nutzen, um die eingehenden HTTP-Anfragen abzuhören. Danach binden wir den Socket an den spezifischen Port auf dem Host-Rechner als unserem System. Wenn die Clients danach die Anfrage anfordern, lauscht der Server auf diese eingehenden verbundenen Anfragen. Der Server antwortet auf die Anfragen des Benutzers über HTTP-Anfragen, um die Anfrage des Benutzers an den Server abzurufen. Danach verarbeitet der Server die Anfrage und sendet die HTTP-Antworten ordnungsgemäß verarbeitet an den Benutzer zurück.







Sockets-Verwaltung des Webservers

In dieser Sitzung erfahren wir, dass Sockets die Kommunikation zwischen verschiedenen Prozessen herstellen, die in unserem System ausgeführt werden. Die Sockets dienen grundsätzlich dazu, die Kommunikation bzw. Verbindung zwischen dem Browser des Kunden und unserem Server herzustellen. Die Anbindung des Sockets ist in C++ auf die im Folgenden beschriebene Weise aufgebaut:



Hier definieren wir die Bibliotheken für Sockets als „#include “. In der Hauptfunktion erstellen wir den Socket, indem wir „server_fd“ initialisieren. Danach prüfen wir den Wert von „server_fd“, der die Bestandsverbindungsvalidierung enthält. Wenn der Server ausgefallen ist und nicht ordnungsgemäß funktioniert, wird die Meldung „Socket-Erstellung fehlgeschlagen“ zurückgegeben oder angezeigt. Andernfalls zeigt die Nachricht mit der IP-Adresse des Webservers die HTML-Daten auf dem Webserver an.



#include
#include
#include
int main ( ) {
int server_fd = socket ( AF_INET, SOCK_STREAM, 0 ) ;
Wenn ( server_fd == - 1 ) {
std::cerr << „Socket-Erstellung fehlgeschlagen“ ;
zurückkehren -1 ;
}
// anders
// {
// std::cout << 'Ausfahrt' ;
// }
// binden
std::cout << „http//:127.0.0.1:8080“ ;
// Weiterer Code geht hier
zurückkehren 0 ;
}


Die Ausgabe dieses Codes ist im Folgenden beigefügt:






Dies zeigt, dass der Socket erfolgreich in C++ erstellt wurde, um eine Verbindung mit dem Webserver herzustellen.

Webserver-Handhabung in C++

Der Webserver des Systems ist so eingerichtet, dass er die verschiedenen C++-Konzepte wie Zusammenführungssortierung, lineare Sortierung usw. verarbeitet. Denken Sie daran, die wichtigen Netzwerkbibliotheken zu initialisieren. Der Webserver läuft auf dem lokalen Rechner (127.0.0.1) und lauscht auf Port 8080.



Binden Sie die erforderlichen Bibliotheken wie folgt in die Programmiersprache C++ ein:

# enthalten < Schub / asio.hpp >


Denken Sie daran, dass die Erstellung eines Webservers in C++ kein einfacher und zeitaufwändiger Prozess ist. Wir können die eingehenden Verbindungen mit „async_accept“ verarbeiten.

Serverantworten im C++-Code auf dem Webserver

Die Serverantwort muss HTTP sein, was im Browser funktioniert und die Ausgabe in der HTML-Ansicht auf der Webseite anzeigt. Alle Bibliotheken verwalten die Server und bearbeiten alle gültigen Anfragen.

Bindung und Abhören des Webservers

Als nächstes müssen wir die Bindung und das Abhören des Webservers kennen, um den Code auf der Webseite problemlos ausführen zu können. Danach müssen wir den Socket an die angegebene Adresse unseres Systems binden, im Wesentlichen die IP-Adresse und den Port, auf dem diese Sockets aktiv sind. Am Port beginnen wir, auf eingehende Verbindungen zu warten.

Wir müssen die wenigen Bibliotheken zum Binden und Verknüpfen initialisieren.

Sockaddr_in-Adresse;


Wir können den Server binden. Wenn der Server ausgefallen ist oder keine Verbindung besteht, wird die Meldung nicht auf der Webseite eines Browsers angezeigt.

Akzeptieren der Verbindungen zum Webserver

In diesem Abschnitt erfahren wir, wie wir den Fluss der Kundenanfragen steuern können. Der Server akzeptiert alle Client-Anfragen über das HTTP-Protokoll. Der Server-Socket gibt die Größe der Nachricht an, die vom Client auf dem Webserver empfangen wird. Die Nachricht enthält die Server-Socket-Verbindung und -Adresse klarer und eindeutiger. Wir prüfen, ob der Server antworten muss, ob der Benutzer-Socket gefunden wird oder nicht. Wenn die Benutzer-Socket-Verbindung nicht gefunden wird, können wir die Verbindung zu einem Webserver nicht akzeptieren.

Methoden zum Senden und Empfangen der Daten vom Benutzer und Server

Nachdem Sie die Socket-Links erstellt und die Verbindung akzeptiert haben, besteht der nächste Schritt darin, die Daten an die Serverseite zu senden und die Daten vom Server zu empfangen, indem Sie verschiedene Schlüsselwörter verwenden und die Funktionen erstellen, die sich auf das Senden und Empfangen der Daten in C++ beziehen. Hier prüfen wir die Reaktion der Daten. Geht es bei dieser Anfrage darum, die Daten abzurufen oder die Daten vom Webserver zu posten? Wir prüfen den Antwortstatus der Kundenanfrage. Wir speichern vorübergehend alle Client-Anfragen im Puffer, um die Nachricht oder Ausgabe auf dem Webserver anzuzeigen.

Lineare Sortierung in C++

Lassen Sie uns hier die lineare Sortierung durchführen und das Ergebnis der linearen Sortierung einfach auf dem Webserver anzeigen. Der Codeausschnitt der linearen Sortierung ist im Folgenden angehängt:

#include
Verwenden des Namensraums std;
Leere LinearSearch ( int arr [ ] , int len, int item ) {
für ( int ich = 0 ;ich < len;i++ ) {
Wenn ( arr [ ich ] == Artikel ) {
cout << Artikel << „Gefunden im Index:“ << ich;
zurückkehren ;
}
}
cout << 'Nicht gefunden' ;
}
int main ( ) {
int arr [ ] = { 10 , 5 , fünfzehn , einundzwanzig , - 3 , 7 } ;
int len ​​= sizeof ( arr ) / Größe von ( arr [ 0 ] ) ;
int item = einundzwanzig ;
LinearSearch ( arr, len, item ) ;
zurückkehren 0 ;
}


In diesem Beispiel suchen wir nach dem Eintrag „21“ mit welchem ​​Index. Also führen wir diesen Code aus. Die Ausgabe dieses Codes ist im Folgenden beigefügt:


Diese Ausgabe ist nun auf dem Webserver wie in jedem Browser wie Chrome, Edge usw. geöffnet.

Beenden Sie alle Verbindungen nach der Ausgabeanzeige

Dies ist der letzte Schritt bei der Verarbeitung der Daten auf einem Webserver. Denken Sie daran, die Socket-Verbindungen zu schließen, nachdem Sie die erforderliche Ausgabe ausgeführt haben. Wir schließen den Socket hier mit den Funktionen wie „close(server_id)“ und „close (client socket)“.

Am Ende des Serverbetriebs wird die erwartete Ausgabe auf der Webseite angezeigt, indem auf die Adresse „http//localhost:8080“ zugegriffen wird.

Abschluss

Am Ende dieses Artikels können wir sagen, dass die einfache Handhabung eines Webservers in C++ wirklich komplex ist und volle Konzentration erfordert, um die Anfrage des HTTP-Clients zu senden und zu empfangen. Wir können die Funktionalität des Webservers erweitern, um den Inhalt dynamisch auf der Webseite anzuzeigen. Hoffentlich ist dieser Artikel hilfreich für Sie und Sie können diese Beispiele in Ihrer Umgebung ausführen, um die Schritte zu verstehen, die zum Erstellen eines einfachen Webservers in C++ erforderlich sind.