Prosty serwer WWW w C++

Prosty Serwer Www W C



W tym artykule dowiemy się o serwerach WWW w C++. Głównym celem serwera WWW jest obsługa przychodzących żądań HTTP, przetwarzanie wszystkich nadchodzących żądań i odpowiadanie w zamian za pomocą internetowej zawartości HTML. Musimy utrzymać serwer WWW w C++, po prostu dodając biblioteki sieciowe w środowisku C++, takie jak „gniazda”, aby obsługiwać komunikację i problemy sieciowe. Serwer WWW jest szkieletem Internetu i sposobem komunikacji między użytkownikami a głównymi serwerami. Przeanalizujmy proces tworzenia prostego serwera WWW poprzez odpowiednie przykładowe wdrożenia.

Konfigurowanie środowiska

Najpierw musimy skonfigurować wszystkie wymagane opcje w naszym środowisku. Musimy wykorzystać gniazda do nasłuchiwania przychodzących żądań HTTP. Następnie wiążemy gniazdo z określonym portem na komputerze hosta jako naszym systemem. Następnie, gdy klienci wywołają żądanie, serwer nasłuchuje przychodzących, połączonych żądań. Serwer odpowiada na żądania użytkownika za pośrednictwem żądań HTTP w celu pobrania żądania użytkownika do serwera. Następnie serwer obsługuje żądanie i zwraca użytkownikowi odpowiedzi HTTP z odpowiednim przygotowaniem.







Obsługa gniazd serwera WWW

W tej sesji dowiemy się, że gniazda umożliwiają komunikację pomiędzy różnymi procesami działającymi w naszym systemie. Gniazda służą zasadniczo do tworzenia komunikacji lub połączenia pomiędzy przeglądarką klienta a naszym serwerem. Połączenie gniazda jest zbudowane w C++ w sposób opisany poniżej:



Tutaj zdefiniujemy biblioteki dla gniazd jako „#include ”. W funkcji main tworzymy gniazdo inicjalizując „server_fd”. Następnie sprawdzamy wartość „server_fd”, która zawiera walidację połączenia podstawowego. Jeśli serwer nie działa i nie działa prawidłowo, zwraca komunikat lub wyświetla komunikat „Utworzenie gniazda nie powiodło się”. W przeciwnym razie wiadomość zawierająca adres IP serwera WWW wyświetli dane HTML na serwerze WWW.



#include
#include
#include
int główny ( ) {
int serwer_fd = gniazdo ( AF_INET, SOCK_STREAM, 0 ) ;
Jeśli ( serwer_fd == - 1 ) {
std::cerr << „Utworzenie gniazda nie powiodło się” ;
powrót -1 ;
}
// w przeciwnym razie
// {
// std::cout << 'Wyjście' ;
// }
// wiązać
std::cout << „http//:127.0.0.1:8080” ;
// Dalszy kod znajduje się tutaj
powrót 0 ;
}


Dane wyjściowe tego kodu są załączone w następujący sposób:






To pokazuje, że gniazdo zostało pomyślnie utworzone w C++ w celu połączenia z serwerem WWW.

Obsługa serwera WWW w C++

Serwer WWW systemu jest skonfigurowany do obsługi różnych koncepcji C++, takich jak sortowanie przez scalanie, sortowanie liniowe itp. Pamiętaj o zainicjowaniu ważnych bibliotek sieciowych. Serwer WWW działa na komputerze lokalnym (127.0.0.1) i nasłuchuje na porcie 8080.



Dołącz niezbędne biblioteki do języka programowania C++ w następujący sposób:

# włączać < zwiększyć / asio.hpp >


Pamiętaj, że utworzenie serwera WWW w C++ nie jest procesem łatwym i czasochłonnym. Połączenia przychodzące możemy obsługiwać za pomocą „async_accept”.

Odpowiedzi serwera w kodzie C++ na serwerze WWW

Odpowiedzią serwera musi być protokół HTTP, który działa w przeglądarce i wyświetla dane wyjściowe w widoku HTML na stronie internetowej. Wszystkie biblioteki zarządzają serwerami i obsługują wszystkie prawidłowe żądania.

Wiązanie i nasłuchiwanie serwera WWW

Następnie musimy wiedzieć o powiązaniu i nasłuchiwaniu serwera WWW, aby łatwo wykonać kod na stronie internetowej. Następnie musimy powiązać gniazdo z podanym adresem naszego systemu, czyli w zasadzie z adresem IP i portem, na którym te gniazda są aktywne. Na porcie zaczynamy nasłuchiwać połączeń przychodzących.

Musimy zainicjować kilka bibliotek, aby powiązać i połączyć.

Adres Sockaddr_in;


Możemy powiązać serwer. Jeśli serwer nie działa lub nie jest podłączony, komunikat nie jest wyświetlany na stronie internetowej żadnej przeglądarki.

Akceptowanie połączeń z serwerem WWW

W tej sekcji dowiemy się, jak możemy kontrolować przepływ żądań klienta. Serwer akceptuje wszystkie żądania klientów poprzez protokół HTTP. Gniazdo serwera wskazuje rozmiar wiadomości otrzymanej na serwerze WWW od klienta. Wiadomość zawiera połączenie z gniazdem serwera i adres w sposób bardziej przejrzysty i unikalny. Sprawdzamy, czy serwer musi odpowiedzieć, jeśli gniazdo użytkownika zostanie znalezione, czy nie. Jeśli połączenie z gniazdem użytkownika nie zostanie znalezione, nie będziemy mogli zaakceptować połączenia z serwerem WWW.

Metody wysyłania i odbierania danych od Użytkownika i po stronie Serwera

Po utworzeniu łączy do gniazd i zaakceptowaniu połączenia, kolejną rzeczą jest wysłanie danych na stronę serwera i odebranie danych z serwera za pomocą różnych słów kluczowych i zbudowanie funkcji związanych z wysyłaniem i odbieraniem danych w C++. Tutaj sprawdzamy reakcję danych. Czy jest to żądanie pobrania danych, czy wysłania danych z serwera WWW? Sprawdzamy status odpowiedzi na zapytanie Klienta. Tymczasowo przechowujemy wszystkie żądania klientów w buforze, aby wyświetlić komunikat lub dane wyjściowe na serwerze internetowym.

Sortowanie liniowe w C++

Przeprowadźmy tutaj sortowanie liniowe i łatwo wyświetlmy wynik sortowania liniowego na serwerze WWW. Fragment kodu sortowania liniowego znajduje się w załączniku:

#include
używając przestrzeni nazw std;
unieważnij wyszukiwanie liniowe ( int [ ] , int dłuż, int element ) {
Do ( wew I = 0 ;I < len;i++ ) {
Jeśli ( przyr [ I ] == przedmiot ) {
cout << przedmiot << ' Znaleziono w indeksie : ' << I;
powrót ;
}
}
cout << 'Nie znaleziono' ;
}
int główny ( ) {
int [ ] = { 10 , 5 , piętnaście , dwadzieścia jeden , - 3 , 7 } ;
int dł. = rozmiar ( przyr ) / rozmiar ( przyr [ 0 ] ) ;
int element = dwadzieścia jeden ;
Wyszukiwanie liniowe ( arr, len, przedmiot ) ;
powrót 0 ;
}


W tym przykładzie przeszukujemy pozycję „21”, pod jakim indeksem. Uruchamiamy więc ten kod. Dane wyjściowe tego kodu są załączone w następujący sposób:


To wyjście jest teraz otwarte na serwerze internetowym, jak w dowolnej przeglądarce, takiej jak Chrome, Edge itp.

Zakończ wszystkie połączenia po wyświetleniu wyniku

Jest to ostatni krok w obsłudze danych na serwerze WWW. Pamiętaj o zamknięciu połączeń gniazd po wykonaniu wymaganego wyjścia. Zamykamy tutaj gniazdo za pomocą funkcji takich jak „close(server_id)” i „close (gniazdo klienta)”.

Po zakończeniu działania serwera oczekiwany wynik zostanie wyświetlony na stronie internetowej pod adresem „http//localhost:8080”.

Wniosek

Na koniec tego artykułu możemy powiedzieć, że prosta obsługa serwera WWW w C++ jest naprawdę złożona i wymaga pełnej koncentracji, aby wysyłać i odbierać żądania klienta HTTP. Możemy rozszerzyć funkcjonalność serwera WWW o dynamiczne wyświetlanie treści na stronie internetowej. Mamy nadzieję, że ten artykuł będzie dla Ciebie pomocny i możesz uruchomić te przykłady w swoim środowisku, aby zrozumieć kroki wymagane do utworzenia prostego serwera WWW w C++.