సాధారణ C++ వెబ్ సర్వర్

Sadharana C Veb Sarvar



ఈ కథనంలో, C++లోని వెబ్ సర్వర్‌ల గురించి తెలుసుకుందాం. వెబ్ సర్వర్ యొక్క ముఖ్య ఉద్దేశ్యం వచ్చే HTTP అభ్యర్థనలను నిర్వహించడం, రాబోయే అన్ని అభ్యర్థనలను ప్రాసెస్ చేయడం మరియు ప్రతిగా వెబ్ HTML కంటెంట్‌తో ప్రతిస్పందించడం. నెట్‌వర్కింగ్ కమ్యూనికేషన్‌లు మరియు సమస్యలను నిర్వహించడానికి “సాకెట్‌లు” వంటి C++ వాతావరణంలో నెట్‌వర్కింగ్ లైబ్రరీలను జోడించడం ద్వారా మేము C++లో వెబ్ సర్వర్‌ను నిర్వహించాలి. వెబ్ సర్వర్ అనేది ఇంటర్నెట్ యొక్క వెన్నెముక మరియు వినియోగదారులు మరియు ప్రధాన సర్వర్‌ల మధ్య కమ్యూనికేషన్ యొక్క మార్గం. సరైన ఉదాహరణ అమలుల ద్వారా సాధారణ వెబ్ సర్వర్‌ని సృష్టించే ప్రక్రియను మూల్యాంకనం చేద్దాం.

పర్యావరణాన్ని ఏర్పాటు చేయడం

ముందుగా మన వాతావరణంలో అవసరమైన అన్ని ఎంపికలను సెటప్ చేయాలి. ఇన్‌కమింగ్ HTTP అభ్యర్థనలను వినడానికి మేము సాకెట్‌లను ఉపయోగించాలి. ఆ తర్వాత, మేము మా సిస్టమ్‌గా హోస్ట్ మెషీన్‌లోని నిర్దిష్ట పోర్ట్‌కు సాకెట్‌ను బంధిస్తాము. ఆ తర్వాత, క్లయింట్లు అభ్యర్థన కోసం కాల్ చేసినప్పుడు, సర్వర్ ఈ ఇన్‌కమింగ్ కనెక్ట్ చేసిన అభ్యర్థనలను వింటుంది. వినియోగదారు అభ్యర్థనను సర్వర్‌కు తీసుకురావడానికి HTTP అభ్యర్థనల ద్వారా వినియోగదారు అభ్యర్థనలకు సర్వర్ ప్రతిస్పందిస్తుంది. ఆ తర్వాత, సర్వర్ అభ్యర్థనను నిర్వహిస్తుంది మరియు సరైన క్రాఫ్టింగ్‌తో వినియోగదారుకు HTTP ప్రతిస్పందనలను అందిస్తుంది.







వెబ్ సర్వర్ యొక్క సాకెట్స్ హ్యాండ్లింగ్

ఈ సెషన్‌లో, మన సిస్టమ్‌లో అమలు చేసే వివిధ ప్రక్రియల మధ్య సాకెట్లు కమ్యూనికేషన్‌ను సృష్టిస్తాయని మేము నేర్చుకుంటాము. క్లయింట్ యొక్క బ్రౌజర్ మరియు మా సర్వర్ మధ్య కమ్యూనికేషన్ లేదా కనెక్షన్‌ని సృష్టించడానికి సాకెట్లు ప్రాథమికంగా ఉపయోగించబడతాయి. కింది వాటిలో పేర్కొన్న విధంగా సాకెట్ యొక్క కనెక్షన్ C++లో నిర్మించబడింది:



ఇక్కడ, మేము సాకెట్ల కోసం లైబ్రరీలను “#include ”గా నిర్వచిస్తాము. ప్రధాన ఫంక్షన్‌లో, “server_fd”ని ప్రారంభించడం ద్వారా మేము సాకెట్‌ను సృష్టిస్తాము. ఆ తర్వాత, స్టాక్ కనెక్షన్ ధ్రువీకరణను కలిగి ఉన్న “server_fd” విలువను మేము తనిఖీ చేస్తాము. సర్వర్ డౌన్ అయి ఉండి, సరిగ్గా పని చేయకపోతే, అది 'సాకెట్ సృష్టి విఫలమైంది' సందేశాన్ని అందిస్తుంది లేదా ప్రదర్శిస్తుంది. లేకపోతే, వెబ్ సర్వర్ యొక్క IP చిరునామాను కలిగి ఉన్న సందేశం వెబ్ సర్వర్‌లోని HTML డేటాను చూపుతుంది.



# చేర్చండి
#ని చేర్చండి
# చేర్చండి
పూర్ణాంక ప్రధాన ( ) {
int server_fd = సాకెట్ ( AF_INET, SOCK_STREAM, 0 ) ;
ఉంటే ( server_fd == - 1 ) {
std::cerr << 'సాకెట్ సృష్టి విఫలమైంది' ;
తిరిగి -1 ;
}
// లేకపోతే
// {
// std::cout << 'బయటకి దారి' ;
// }
// కట్టు
std::cout << 'http//:127.0.0.1:8080' ;
// తదుపరి కోడ్ ఇక్కడకు వెళుతుంది
తిరిగి 0 ;
}


ఈ కోడ్ యొక్క అవుట్‌పుట్ కింది వాటిలో జోడించబడింది:






వెబ్ సర్వర్‌తో కనెక్ట్ అవ్వడానికి C++లో సాకెట్ విజయవంతంగా సృష్టించబడిందని ఇది చూపిస్తుంది.

C++లో వెబ్ సర్వర్ హ్యాండ్లింగ్

సిస్టమ్ యొక్క వెబ్ సర్వర్ విలీనం సార్టింగ్, లీనియర్ సార్టింగ్ మొదలైన విభిన్న C++ కాన్సెప్ట్‌లను నిర్వహించడానికి సెటప్ చేయబడింది. ముఖ్యమైన నెట్‌వర్కింగ్ లైబ్రరీలను ప్రారంభించాలని గుర్తుంచుకోండి. వెబ్ సర్వర్ స్థానిక మెషీన్ (127.0.0.1)పై నడుస్తుంది మరియు పోర్ట్ 8080లో వింటుంది.



కింది విధంగా C++ ప్రోగ్రామింగ్ భాషలో అవసరమైన లైబ్రరీలను చేర్చండి:

# చేర్చండి < పెంచండి / asio.hpp >


C++లో వెబ్ సర్వర్‌ని సృష్టించడం అనేది సులభమైన మరియు సమయం తీసుకునే ప్రక్రియ కాదని గుర్తుంచుకోండి. మేము 'async_accept'ని ఉపయోగించి ఇన్‌కమింగ్ కనెక్షన్‌లను నిర్వహించగలము.

వెబ్ సర్వర్‌లోని C++ కోడ్‌లో సర్వర్ ప్రతిస్పందనలు

సర్వర్ ప్రతిస్పందన తప్పనిసరిగా HTTP అయి ఉండాలి, ఇది బ్రౌజర్‌లో పని చేస్తుంది మరియు వెబ్ పేజీలోని HTML వీక్షణలో అవుట్‌పుట్‌ను చూపుతుంది. అన్ని లైబ్రరీలు సర్వర్‌లను నిర్వహిస్తాయి మరియు అన్ని చెల్లుబాటు అయ్యే అభ్యర్థనలను నిర్వహిస్తాయి.

వెబ్ సర్వర్ యొక్క బైండింగ్ మరియు లిజనింగ్

తర్వాత, వెబ్ పేజీలో కోడ్‌ను సులభంగా అమలు చేయడానికి వెబ్ సర్వర్ యొక్క బైండింగ్ మరియు లిజనింగ్ గురించి మనం తెలుసుకోవాలి. ఆ తర్వాత, మన సిస్టమ్ యొక్క అందించిన చిరునామాకు, ప్రాథమికంగా ఈ సాకెట్లు సక్రియంగా ఉన్న IP చిరునామా మరియు పోర్ట్‌కు సాకెట్‌ను బైండ్ చేయాలి. పోర్ట్‌లో, మేము ఇన్‌కమింగ్ కనెక్షన్‌ల కోసం వినడం ప్రారంభిస్తాము.

బైండ్ చేయడానికి మరియు లింక్ చేయడానికి మేము కొన్ని లైబ్రరీలను ప్రారంభించాలి.

Sockaddr_in చిరునామా;


మేము సర్వర్‌ను బంధించగలము. సర్వర్ డౌన్ అయి ఉంటే లేదా కనెక్ట్ కాకపోతే, సందేశం ఏదైనా బ్రౌజర్ యొక్క వెబ్ పేజీలో ప్రదర్శించబడదు.

వెబ్ సర్వర్‌కు కనెక్షన్‌లను అంగీకరిస్తోంది

ఈ విభాగంలో, మేము క్లయింట్ అభ్యర్థనల ప్రవాహాన్ని ఎలా నియంత్రించవచ్చో నేర్చుకుంటాము. సర్వర్ HTTP ప్రోటోకాల్ ద్వారా అన్ని క్లయింట్ అభ్యర్థనలను అంగీకరిస్తుంది. క్లయింట్ నుండి వెబ్ సర్వర్‌లో స్వీకరించబడిన సందేశం యొక్క పరిమాణాన్ని సర్వర్ సాకెట్ సూచిస్తుంది. సందేశం సర్వర్ సాకెట్ కనెక్షన్ మరియు చిరునామాను మరింత స్పష్టంగా మరియు ప్రత్యేకంగా కలిగి ఉంది. వినియోగదారు సాకెట్ కనుగొనబడిందా లేదా అనేది సర్వర్ ప్రతిస్పందించాల్సిన అవసరం ఉందో లేదో మేము తనిఖీ చేస్తాము. వినియోగదారు సాకెట్ కనెక్షన్ కనుగొనబడకపోతే, మేము వెబ్ సర్వర్‌కు కనెక్షన్‌ని అంగీకరించలేము.

వినియోగదారు మరియు సర్వర్ ముగింపు నుండి డేటాను పంపడం మరియు స్వీకరించడం యొక్క పద్ధతులు

సాకెట్ లింక్‌లను సృష్టించి, కనెక్షన్‌ని అంగీకరించిన తర్వాత, తదుపరి విషయం ఏమిటంటే, డేటాను సర్వర్ వైపుకు పంపడం మరియు వివిధ కీలకపదాలను ఉపయోగించి సర్వర్ నుండి డేటాను స్వీకరించడం మరియు C++లో డేటాను పంపడం మరియు స్వీకరించడం వంటి విధులను రూపొందించడం. ఇక్కడ, మేము డేటా ప్రతిస్పందనను తనిఖీ చేస్తాము. ఈ అభ్యర్థన డేటాను పొందడానికి లేదా వెబ్ సర్వర్ నుండి డేటాను పోస్ట్ చేయాలా? మేము క్లయింట్ అభ్యర్థన యొక్క ప్రతిస్పందన స్థితిని తనిఖీ చేస్తాము. వెబ్ సర్వర్‌లో సందేశం లేదా అవుట్‌పుట్‌ను ప్రదర్శించడానికి మేము అన్ని క్లయింట్ అభ్యర్థనలను బఫర్‌లో తాత్కాలికంగా నిల్వ చేస్తాము.

C++లో సరళ క్రమబద్ధీకరణ

ఇక్కడ లీనియర్ సార్టింగ్‌ని నిర్వహించి, వెబ్ సర్వర్‌లో లీనియర్ సార్టింగ్ ఫలితాన్ని సులభంగా ప్రదర్శిస్తాము. లీనియర్ సార్టింగ్ యొక్క కోడ్ స్నిప్పెట్ కింది వాటిలో జోడించబడింది:

#include
నేమ్‌స్పేస్ stdని ఉపయోగించడం;
లీనియర్ సెర్చ్ శూన్యం ( int arr [ ] , Int len, Int అంశం ) {
కోసం ( int i = 0 ;i < len;i++ ) {
ఉంటే ( అరె [ i ] == అంశం ) {
కోట్ << అంశం << 'సూచికలో కనుగొనబడింది:' << నేను;
తిరిగి ;
}
}
కోట్ << 'దొరకలేదు' ;
}
పూర్ణాంక ప్రధాన ( ) {
int arr [ ] = { 10 , 5 , పదిహేను , ఇరవై ఒకటి , - 3 , 7 } ;
int len ​​= పరిమాణం ( అరె ) / పరిమాణం ( అరె [ 0 ] ) ;
int అంశం = ఇరవై ఒకటి ;
లీనియర్ సెర్చ్ ( arr, len, అంశం ) ;
తిరిగి 0 ;
}


ఈ ఉదాహరణలో, మేము '21' అంశాన్ని ఏ సూచికలో శోధిస్తాము. కాబట్టి, మేము ఈ కోడ్‌ని అమలు చేస్తాము. ఈ కోడ్ యొక్క అవుట్‌పుట్ కింది వాటిలో జోడించబడింది:


ఈ అవుట్‌పుట్ ఇప్పుడు క్రోమ్, ఎడ్జ్ మొదలైన ఏదైనా బ్రౌజర్‌లో వలె వెబ్ సర్వర్‌లో తెరవబడింది.

అవుట్‌పుట్ డిస్‌ప్లే తర్వాత అన్ని కనెక్షన్‌లను ముగించండి

వెబ్ సర్వర్‌లో డేటాను నిర్వహించడానికి ఇది చివరి దశ. అవసరమైన అవుట్‌పుట్ చేసిన తర్వాత సాకెట్ కనెక్షన్‌లను మూసివేయాలని గుర్తుంచుకోండి. మేము 'close(server_id)' మరియు 'close (client socket)' వంటి ఫంక్షన్‌లను ఉపయోగించి ఇక్కడ సాకెట్‌ను మూసివేస్తాము.

సర్వర్‌ని అమలు చేయడం ముగింపులో, 'http//localhost:8080' చిరునామాను యాక్సెస్ చేయడం ద్వారా ఆశించిన అవుట్‌పుట్ వెబ్ పేజీలో ప్రదర్శించబడుతుంది.

ముగింపు

ఈ కథనం ముగింపులో, C++లో సాధారణ వెబ్ సర్వర్ హ్యాండ్లింగ్ నిజంగా సంక్లిష్టమైనది మరియు HTTP క్లయింట్ అభ్యర్థనను పంపడానికి మరియు స్వీకరించడానికి పూర్తి ఏకాగ్రత అవసరమని మేము చెప్పగలం. వెబ్ పేజీలో కంటెంట్‌ను డైనమిక్‌గా ప్రదర్శించడానికి మేము వెబ్ సర్వర్ కార్యాచరణను విస్తరించవచ్చు. ఆశాజనక, ఈ కథనం మీకు సహాయకరంగా ఉంటుంది మరియు C++లో ఒక సాధారణ వెబ్ సర్వర్‌ని సృష్టించడానికి అవసరమైన దశలను అర్థం చేసుకోవడానికి మీరు ఈ ఉదాహరణలను మీ వాతావరణంలో అమలు చేయవచ్చు.