Simpleng C++ Web Server

Simpleng C Web Server



Sa artikulong ito, malalaman natin ang tungkol sa mga web server sa C++. Ang pangunahing layunin ng web server ay upang pangasiwaan ang dumarating na mga kahilingan sa HTTP, iproseso ang lahat ng darating na kahilingan, at tumugon kasama ang nilalaman ng web HTML bilang kapalit. Kailangan nating panatilihin ang web server sa C++ sa pamamagitan lamang ng pagdaragdag ng mga networking library sa C++ na kapaligiran, tulad ng 'mga socket', upang mahawakan ang mga komunikasyon at isyu sa networking. Ang isang web server ay ang gulugod ng internet at ito ay isang paraan ng komunikasyon sa pagitan ng mga gumagamit at pangunahing mga server. Suriin natin ang proseso ng paglikha ng isang simpleng web server sa pamamagitan ng wastong mga halimbawang pagpapatupad.

Pag-set up ng Kapaligiran

Kailangan muna nating i-set up ang lahat ng kinakailangang opsyon sa ating kapaligiran. Kailangan nating gamitin ang mga socket upang makinig sa mga papasok na kahilingan sa HTTP. Pagkatapos nito, ibibigkis namin ang socket sa partikular na port sa host machine bilang aming system. Pagkatapos nito, kapag tumawag ang mga kliyente para sa kahilingan, pinakikinggan ng server ang mga papasok na konektadong kahilingang ito. Tumutugon ang server sa mga kahilingan ng user sa pamamagitan ng mga kahilingan sa HTTP na kunin ang kahilingan ng user sa server. Pagkatapos nito, pinangangasiwaan ng server ang kahilingan at ibinabalik ang mga tugon ng HTTP sa user nang may wastong paggawa.







Paghawak ng Mga Socket ng Web Server

Sa session na ito, malalaman natin na ang mga socket ay gumagawa ng komunikasyon sa pagitan ng iba't ibang proseso na tumatakbo sa aming system. Ang mga socket ay karaniwang ginagamit upang lumikha ng komunikasyon o koneksyon sa pagitan ng browser ng kliyente at ng aming server. Ang koneksyon ng socket ay binuo sa C++ sa paraang nabanggit sa mga sumusunod:



Dito, tutukuyin namin ang mga aklatan para sa mga socket bilang '#include '. Sa pangunahing pag-andar, nilikha namin ang socket sa pamamagitan ng pagsisimula ng 'server_fd'. Pagkatapos nito, sinusuri namin ang halaga ng 'server_fd' na naglalaman ng pagpapatunay ng koneksyon sa stock. Kung ang server ay down at hindi gumagana nang maayos, ibabalik o ipinapakita nito ang mensaheng 'Nabigo ang paggawa ng socket'. Kung hindi, ang mensahe na may IP address ng web server ay magpapakita ng data ng HTML sa web server.



#include
#include
#include
int pangunahing ( ) {
int server_fd = socket ( AF_INET, SOCK_STREAM, 0 ) ;
kung ( server_fd == - 1 ) {
std::cerr << 'Nabigo ang paggawa ng socket' ;
bumalik -1 ;
}
// iba pa
// {
// std::cout << 'lumabas' ;
// }
// magbigkis
std::cout << 'http://:127.0.0.1:8080' ;
// Ang karagdagang code ay napupunta dito
bumalik 0 ;
}


Ang output ng code na ito ay nakalakip sa sumusunod:






Ipinapakita nito na matagumpay na nalikha ang socket sa C++ upang kumonekta sa web server.

Pangangasiwa sa Web Server sa C++

Naka-set up ang web server ng system upang pangasiwaan ang iba't ibang konsepto ng C++ tulad ng pagsasama-sama ng pag-uuri, linear na pag-uuri, atbp. Tandaang simulan ang mahahalagang networking library. Ang web server ay tumatakbo sa lokal na makina (127.0.0.1) at nakikinig sa port 8080.



Isama ang mga kinakailangang aklatan sa C++ programming language gaya ng sumusunod:

# isama < pagpapalakas / asio.hpp >


Tandaan na ang paggawa ng web server sa C++ ay hindi isang madali at nakakaubos ng oras na proseso. Maaari naming pangasiwaan ang mga papasok na koneksyon gamit ang 'async_accept'.

Mga Tugon ng Server sa C++ Code sa Web Server

Ang tugon ng server ay dapat na HTTP na gumagana sa browser at nagpapakita ng output sa HTML view sa web page. Ang lahat ng mga aklatan ay namamahala sa mga server at pinangangasiwaan ang lahat ng wastong kahilingan.

Pagbubuklod at Pakikinig ng Web Server

Susunod, kailangan nating malaman ang tungkol sa pagbubuklod at pakikinig ng web server upang madaling maisagawa ang code sa web page. Pagkatapos nito, kailangan nating itali ang socket sa ibinigay na address ng aming system, karaniwang ang IP address at port kung saan aktibo ang mga socket na ito. Sa port, nagsisimula kaming makinig para sa mga papasok na koneksyon.

Kailangan nating simulan ang ilang mga aklatan upang magbigkis at mag-link.

Sockaddr_in address;


Maaari naming itali ang server. Kung ang server ay down o hindi nakakonekta, ang mensahe ay hindi ipinapakita sa web page ng anumang browser.

Pagtanggap ng Mga Koneksyon sa Web Server

Sa seksyong ito, malalaman natin kung paano natin makokontrol ang daloy ng mga kahilingan ng kliyente. Tinatanggap ng server ang lahat ng kahilingan ng kliyente sa pamamagitan ng HTTP protocol. Ang server socket ay nagpapahiwatig ng laki ng mensahe na natanggap sa web server mula sa kliyente. Ang mensahe ay naglalaman ng koneksyon sa socket ng server at address nang mas malinaw at natatangi. Sinusuri namin kung kailangang tumugon ang server kung natagpuan ang socket ng user o hindi. Kung hindi matagpuan ang socket connection ng user, hindi namin matatanggap ang koneksyon sa isang web server.

Mga Paraan ng Pagpapadala at Pagtanggap ng Data mula sa User at Server End

Matapos gawin ang mga link ng socket at tanggapin ang koneksyon, ang susunod na bagay ay ipadala ang data sa gilid ng server at tanggapin ang data mula sa server gamit ang iba't ibang mga keyword at pagbuo ng mga function na nauugnay sa pagpapadala at pagtanggap ng data sa C++. Dito, sinusuri namin ang tugon ng data. Ang kahilingan ba na ito ay makuha ang data o i-POST ang data mula sa web server? Sinusuri namin ang status ng tugon ng kahilingan ng kliyente. Pansamantala naming iniimbak ang lahat ng mga kahilingan ng kliyente sa buffer upang ipakita ang mensahe o output sa web server.

Linear Sorting sa C++

Gawin natin ang linear sorting dito at ipakita ang resulta ng linear sorting sa web server nang madali. Ang code snippet ng linear sorting ay naka-attach sa sumusunod:

#include
gamit ang namespace std;
walang bisa LinearSearch ( int arr [ ] , int len, int item ) {
para sa ( int i = 0 ;i < len;i++ ) {
kung ( arr [ i ] == item ) {
cout << aytem << ' Natagpuan sa index : ' << ako;
bumalik ;
}
}
cout << 'Hindi mahanap' ;
}
int pangunahing ( ) {
int arr [ ] = { 10 , 5 , labinlima , dalawampu't isa , - 3 , 7 } ;
int len ​​= laki ng ( arr ) / sukat ng ( arr [ 0 ] ) ;
int item = dalawampu't isa ;
LinearSearch ( arr, len, item ) ;
bumalik 0 ;
}


Sa halimbawang ito, hinahanap namin ang item na '21' kung saan ang index. Kaya, pinapatakbo namin ang code na ito. Ang output ng code na ito ay nakalakip sa sumusunod:


Ang output na ito ay bukas na ngayon sa web server tulad ng sa anumang browser gaya ng Chrome, Edge, atbp.

Tapusin ang Lahat ng Koneksyon Pagkatapos ng Output Display

Ito ang huling hakbang sa paghawak ng data sa isang web server. Tandaan na isara ang mga koneksyon sa socket pagkatapos isagawa ang kinakailangang output. Isinasara namin ang socket dito gamit ang mga function tulad ng 'close(server_id)' at 'close (client socket)'.

Sa pagtatapos ng pagpapatakbo ng server, ang inaasahang output ay ipinapakita sa web page sa pamamagitan ng pag-access sa address bilang “http//localhost:8080”.

Konklusyon

Sa dulo ng artikulong ito, masasabi nating ang simpleng paghawak ng web server sa C++ ay talagang kumplikado at nangangailangan ng buong konsentrasyon upang maipadala at matanggap ang kahilingan ng HTTP client. Maaari naming palawakin ang functionality ng web server upang dynamic na ipakita ang nilalaman sa web page. Sana, ang artikulong ito ay kapaki-pakinabang para sa iyo, at maaari mong patakbuhin ang mga halimbawang ito sa iyong kapaligiran upang maunawaan ang mga hakbang na kinakailangan upang lumikha ng isang simpleng web server sa C++.