Vienkāršs C++ tīmekļa serveris

Vienkarss C Timekla Serveris



Šajā rakstā mēs uzzināsim par tīmekļa serveriem C++ valodā. Tīmekļa servera galvenais mērķis ir apstrādāt ienākošos HTTP pieprasījumus, apstrādāt visus nākamos pieprasījumus un atbildēt ar tīmekļa HTML saturu. Mums ir jāuztur tīmekļa serveris C++ valodā, vienkārši pievienojot C++ vidē tīkla bibliotēkas, piemēram, “ligzdas”, lai risinātu tīkla sakarus un problēmas. Tīmekļa serveris ir interneta mugurkauls, un tas ir saziņas veids starp lietotājiem un galvenajiem serveriem. Novērtēsim vienkārša tīmekļa servera izveides procesu, izmantojot atbilstošus piemērus.

Vides iestatīšana

Vispirms mums ir jāiestata visas nepieciešamās iespējas mūsu vidē. Mums ir jāizmanto ligzdas, lai noklausītos ienākošos HTTP pieprasījumus. Pēc tam mēs piesaistām ligzdu konkrētajam resursdatora datora portam kā mūsu sistēmai. Pēc tam, kad klienti pieprasa pieprasījumu, serveris noklausās šos ienākošos savienotos pieprasījumus. Serveris atbild uz lietotāja pieprasījumiem, izmantojot HTTP pieprasījumus, lai nogādātu lietotāja pieprasījumu serverim. Pēc tam serveris apstrādā pieprasījumu un atgriež HTTP atbildes lietotājam, pareizi noformējot.







Tīmekļa servera ligzdu apstrāde

Šajā sesijā mēs uzzināsim, ka ligzdas veido saziņu starp dažādiem procesiem, kas darbojas mūsu sistēmā. Sockets pamatā tiek izmantotas, lai izveidotu saziņu vai savienojumu starp klienta pārlūkprogrammu un mūsu serveri. Kontaktligzdas savienojums ir iebūvēts C++ tādā veidā, kā norādīts tālāk:



Šeit mēs definēsim ligzdu bibliotēkas kā “#include ”. Galvenajā funkcijā mēs izveidojam ligzdu, inicializējot “server_fd”. Pēc tam mēs pārbaudām “server_fd” vērtību, kas satur krājuma savienojuma validāciju. Ja serveris nedarbojas un nedarbojas pareizi, tas atgriež vai parāda ziņojumu “Socket izveide neizdevās”. Pretējā gadījumā ziņojumā, kurā ir tīmekļa servera IP adrese, tiks parādīti tīmekļa servera HTML dati.



#include
#include
#include
int galvenais ( ) {
int server_fd = ligzda ( AF_INET, SOCK_STREAM, 0 ) ;
ja ( server_fd == - 1 ) {
std::cerr << 'Neizdevās izveidot kontaktligzdu' ;
atgriezties -1 ;
}
// cits
// {
// std::cout << 'Izeja' ;
// }
// saistīt
std::cout << 'http//:127.0.0.1:8080' ;
// Papildu kods ir pieejams šeit
atgriezties 0 ;
}


Šī koda izvade ir pievienota šādi:






Tas parāda, ka ligzda ir veiksmīgi izveidota C++, lai izveidotu savienojumu ar tīmekļa serveri.

Web servera apstrāde programmā C++

Sistēmas tīmekļa serveris ir iestatīts, lai apstrādātu dažādus C++ jēdzienus, piemēram, sapludināšanas kārtošanu, lineāro kārtošanu utt. Atcerieties inicializēt svarīgās tīkla bibliotēkas. Tīmekļa serveris darbojas vietējā datorā (127.0.0.1) un klausās portā 8080.



C++ programmēšanas valodā iekļaujiet nepieciešamās bibliotēkas šādi:

# ietver < palielināt / asio.hpp >


Atcerieties, ka tīmekļa servera izveide programmā C++ nav viegls un laikietilpīgs process. Mēs varam apstrādāt ienākošos savienojumus, izmantojot “async_accept”.

Servera atbildes C++ kodā tīmekļa serverī

Servera atbildei ir jābūt HTTP, kas darbojas pārlūkprogrammā un parāda izvadi tīmekļa lapas HTML skatā. Visas bibliotēkas pārvalda serverus un apstrādā visus derīgos pieprasījumus.

Web servera saistīšana un klausīšanās

Tālāk mums ir jāzina par tīmekļa servera saistīšanu un noklausīšanos, lai viegli izpildītu kodu tīmekļa lapā. Pēc tam mums ir jāsaista ligzda ar norādīto mūsu sistēmas adresi, būtībā ar IP adresi un portu, kurā šīs ligzdas ir aktīvas. Portā mēs sākam klausīties ienākošos savienojumus.

Mums ir jāinicializē dažas bibliotēkas, kuras saistīt un saistīt.

Sockaddr_in adrese;


Mēs varam saistīt serveri. Ja serveris nedarbojas vai nav izveidots savienojums, ziņojums netiek parādīts neviena pārlūkprogrammas tīmekļa lapā.

Savienojumu ar Web serveri pieņemšana

Šajā sadaļā uzzināsim, kā varam kontrolēt klienta pieprasījumu plūsmu. Serveris pieņem visus klientu pieprasījumus, izmantojot HTTP protokolu. Servera ligzda norāda ziņojuma lielumu, kas tiek saņemts tīmekļa serverī no klienta. Ziņojumā ir skaidrāk un unikālāk norādīts servera ligzdas savienojums un adrese. Mēs pārbaudām, vai serverim ir jāatbild, ja lietotāja ligzda ir atrasta. Ja lietotāja ligzdas savienojums netiek atrasts, mēs nevaram pieņemt savienojumu ar tīmekļa serveri.

Datu nosūtīšanas un saņemšanas no lietotāja un servera gala metodes

Pēc ligzdas saišu izveides un savienojuma pieņemšanas nākamais ir datu nosūtīšana uz servera pusi un datu saņemšana no servera, izmantojot dažādus atslēgvārdus un veidojot funkcijas, kas ir saistītas ar datu nosūtīšanu un saņemšanu C++ valodā. Šeit mēs pārbaudām datu reakciju. Vai šis pieprasījums ir iegūt datus vai POST datus no tīmekļa servera? Mēs pārbaudām klienta pieprasījuma atbildes statusu. Mēs īslaicīgi saglabājam visus klientu pieprasījumus buferī, lai parādītu ziņojumu vai izvadi tīmekļa serverī.

Lineārā kārtošana programmā C++

Šeit veiksim lineāro kārtošanu un viegli parādīsim lineārās kārtošanas rezultātu tīmekļa serverī. Lineārās šķirošanas koda fragments ir pievienots šādi:

#include
izmantojot namespace std;
nederīga Lineārā meklēšana ( int arr [ ] , int len, int item ) {
priekš ( starpt i = 0 i < len;i++ ) {
ja ( arr [ i ] == prece ) {
cout << lieta << ' Atrasts indeksā : ' << i;
atgriezties ;
}
}
cout << 'Nav atrasts' ;
}
int galvenais ( ) {
int arr [ ] = { 10 , 5 , piecpadsmit , divdesmitviens ,- 3 , 7 } ;
int len ​​= sizeof ( arr ) / izmērs ( arr [ 0 ] ) ;
int vienums = divdesmitviens ;
Lineārā meklēšana ( arr, len, prece ) ;
atgriezties 0 ;
}


Šajā piemērā mēs meklējam vienumu “21”, kurā rādītājā. Tātad, mēs palaižam šo kodu. Šī koda izvade ir pievienota šādi:


Šī izvade tagad ir atvērta tīmekļa serverī tāpat kā jebkurā pārlūkprogrammā, piemēram, Chrome, Edge utt.

Pārtrauciet visus savienojumus pēc izvades displeja

Šis ir pēdējais solis datu apstrādē tīmekļa serverī. Pēc nepieciešamās izvades veikšanas neaizmirstiet aizvērt kontaktligzdu savienojumus. Šeit mēs aizveram ligzdu, izmantojot tādas funkcijas kā “close(server_id)” un “close (klienta ligzda)”.

Servera darbības beigās gaidāmā izvade tiek parādīta tīmekļa lapā, piekļūstot adresei kā “http//localhost:8080”.

Secinājums

Šī raksta beigās mēs varam teikt, ka vienkārša tīmekļa servera apstrāde C++ ir patiešām sarežģīta un tai ir nepieciešama pilnīga koncentrēšanās, lai nosūtītu un saņemtu HTTP klienta pieprasījumu. Mēs varam paplašināt tīmekļa servera funkcionalitāti, lai dinamiski parādītu saturu tīmekļa lapā. Cerams, ka šis raksts jums noderēs, un jūs varat palaist šos piemērus savā vidē, lai izprastu darbības, kas jāveic, lai izveidotu vienkāršu tīmekļa serveri programmā C++.