सरल सी++ वेब सर्वर

Sarala Si Veba Sarvara



इस लेख में हम C++ में वेब सर्वर के बारे में जानेंगे। वेब सर्वर का मुख्य उद्देश्य आने वाले HTTP अनुरोधों को संभालना, आने वाले सभी अनुरोधों को संसाधित करना और बदले में वेब HTML सामग्री के साथ प्रतिक्रिया देना है। हमें नेटवर्किंग संचार और मुद्दों को संभालने के लिए C++ वातावरण में 'सॉकेट' जैसी नेटवर्किंग लाइब्रेरी जोड़कर C++ में वेब सर्वर को बनाए रखने की आवश्यकता है। एक वेब सर्वर इंटरनेट की रीढ़ है और उपयोगकर्ताओं और मुख्य सर्वर के बीच संचार का एक तरीका है। आइए उचित उदाहरण कार्यान्वयन के माध्यम से एक सरल वेब सर्वर बनाने की प्रक्रिया का मूल्यांकन करें।

पर्यावरण की स्थापना

हमें सबसे पहले अपने परिवेश में सभी आवश्यक विकल्प स्थापित करने होंगे। हमें आने वाले HTTP अनुरोधों को सुनने के लिए सॉकेट का उपयोग करने की आवश्यकता है। उसके बाद, हम सॉकेट को अपने सिस्टम के रूप में होस्ट मशीन पर विशिष्ट पोर्ट से बांधते हैं। उसके बाद, जब क्लाइंट रिक्वेस्ट के लिए कॉल करते हैं, तो सर्वर इन आने वाले कनेक्टेड रिक्वेस्ट को सुनता है। सर्वर उपयोगकर्ता के अनुरोध को सर्वर तक लाने के लिए HTTP अनुरोधों के माध्यम से उपयोगकर्ता के अनुरोधों का जवाब देता है। उसके बाद, सर्वर अनुरोध को संभालता है और उचित क्राफ्टिंग के साथ उपयोगकर्ता को HTTP प्रतिक्रियाएं लौटाता है।







वेब सर्वर का सॉकेट संचालन

इस सत्र में, हम सीखेंगे कि सॉकेट हमारे सिस्टम में चलने वाली विभिन्न प्रक्रियाओं के बीच संचार बनाते हैं। सॉकेट का उपयोग मूल रूप से क्लाइंट के ब्राउज़र और हमारे सर्वर के बीच संचार या कनेक्शन बनाने के लिए किया जाता है। सॉकेट का कनेक्शन C++ में निम्नलिखित तरीके से बनाया गया है:



यहां, हम सॉकेट के लिए लाइब्रेरी को '#include ' के रूप में परिभाषित करेंगे। मुख्य फ़ंक्शन में, हम 'server_fd' को प्रारंभ करके सॉकेट बनाते हैं। उसके बाद, हम 'server_fd' का मान जांचते हैं जिसमें स्टॉक कनेक्शन सत्यापन शामिल है। यदि सर्वर डाउन है और ठीक से काम नहीं कर रहा है, तो यह 'सॉकेट निर्माण विफल' संदेश लौटाता है या प्रदर्शित करता है। अन्यथा, जिस संदेश में वेब सर्वर का आईपी पता है वह वेब सर्वर पर HTML का डेटा दिखाएगा।



#शामिल करें
#शामिल
#शामिल
मुख्य प्रवेश बिंदु ( ) {
int सर्वर_एफडी = सॉकेट ( AF_INET, SOCK_STREAM, 0 ) ;
अगर ( सर्वर_एफडी == - 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 दृश्य पर आउटपुट दिखाती है। सभी लाइब्रेरी सर्वर का प्रबंधन करती हैं और सभी वैध अनुरोधों को संभालती हैं।

वेब सर्वर को बाइंड करना और सुनना

इसके बाद, हमें वेब पेज पर कोड को आसानी से निष्पादित करने के लिए वेब सर्वर की बाइंडिंग और लिसनिंग के बारे में जानना होगा। उसके बाद, हमें सॉकेट को अपने सिस्टम के दिए गए पते से बांधना होगा, मूल रूप से आईपी पता और पोर्ट जिस पर ये सॉकेट सक्रिय हैं। पोर्ट पर, हम आने वाले कनेक्शनों को सुनना शुरू करते हैं।

हमें बाइंड और लिंक करने के लिए कुछ पुस्तकालयों को आरंभ करने की आवश्यकता है।

Sockaddr_in पता;


हम सर्वर को बाइंड कर सकते हैं। यदि सर्वर डाउन है या कनेक्ट नहीं है, तो संदेश किसी भी ब्राउज़र के वेब पेज पर प्रदर्शित नहीं होता है।

वेब सर्वर से कनेक्शन स्वीकार करना

इस अनुभाग में, हम सीखेंगे कि हम ग्राहक के अनुरोधों के प्रवाह को कैसे नियंत्रित कर सकते हैं। सर्वर HTTP प्रोटोकॉल के माध्यम से सभी क्लाइंट अनुरोधों को स्वीकार करता है। सर्वर सॉकेट क्लाइंट से वेब सर्वर पर प्राप्त संदेश के आकार को इंगित करता है। संदेश में सर्वर सॉकेट कनेक्शन और पता अधिक स्पष्ट और विशिष्ट रूप से शामिल है। हम जाँचते हैं कि उपयोगकर्ता सॉकेट मिलने पर सर्वर को प्रतिक्रिया देने की आवश्यकता है या नहीं। यदि उपयोगकर्ता सॉकेट कनेक्शन नहीं मिलता है, तो हम वेब सर्वर से कनेक्शन स्वीकार नहीं कर सकते।

उपयोगकर्ता और सर्वर से डेटा भेजने और प्राप्त करने की विधियाँ

सॉकेट लिंक बनाने और कनेक्शन स्वीकार करने के बाद, अगली बात डेटा को सर्वर साइड पर भेजना और विभिन्न कीवर्ड का उपयोग करके सर्वर से डेटा प्राप्त करना और C++ में डेटा भेजने और प्राप्त करने से संबंधित कार्यों का निर्माण करना है। यहां, हम डेटा की प्रतिक्रिया की जांच करते हैं। क्या यह अनुरोध डेटा प्राप्त करने के लिए है या वेब सर्वर से डेटा पोस्ट करने के लिए है? हम ग्राहक के अनुरोध की प्रतिक्रिया स्थिति की जांच करते हैं। हम वेब सर्वर पर संदेश या आउटपुट प्रदर्शित करने के लिए सभी क्लाइंट अनुरोधों को अस्थायी रूप से बफर पर संग्रहीत करते हैं।

C++ में रैखिक छँटाई

आइए यहां रैखिक छँटाई करें और वेब सर्वर पर रैखिक छँटाई का परिणाम आसानी से प्रदर्शित करें। रैखिक सॉर्टिंग का कोड स्निपेट निम्नलिखित में संलग्न है:

#शामिल
नेमस्पेस एसटीडी का उपयोग करना;
शून्य रैखिक खोज ( int गिरफ्तार [ ] , इंट लेन, इंट आइटम ) {
के लिए ( int यहाँ मैं = 0 ;मैं < लेन;आई++ ) {
अगर ( आगमन [ मैं ] == आइटम ) {
अदालत << वस्तु << 'सूचकांक पर पाया गया:' << मैं;
वापस करना ;
}
}
अदालत << 'नहीं मिला' ;
}
मुख्य प्रवेश बिंदु ( ) {
int गिरफ्तार [ ] = { 10 , 5 , पंद्रह , इक्कीस , - 3 , 7 } ;
int len ​​= sizeof ( आगमन ) / का आकार ( आगमन [ 0 ] ) ;
पूर्णांक आइटम = इक्कीस ;
रैखिक खोज ( एआर, लेन, आइटम ) ;
वापस करना 0 ;
}


इस उदाहरण में, हम आइटम '21' को किस सूचकांक पर खोजते हैं। तो, हम यह कोड चलाते हैं। इस कोड का आउटपुट निम्नलिखित में संलग्न है:


यह आउटपुट अब क्रोम, एज आदि जैसे किसी भी ब्राउज़र की तरह वेब सर्वर पर खुला है।

आउटपुट डिस्प्ले के बाद सभी कनेक्शन समाप्त करें

वेब सर्वर पर डेटा को संभालने का यह अंतिम चरण है। आवश्यक आउटपुट निष्पादित करने के बाद सॉकेट कनेक्शन बंद करना याद रखें। हम यहां 'close(server_id)' और 'close (क्लाइंट सॉकेट)' जैसे फ़ंक्शंस का उपयोग करके सॉकेट को बंद करते हैं।

सर्वर चलाने के अंत में, अपेक्षित आउटपुट वेब पेज पर 'http//localhost:8080' पते पर पहुंच कर प्रदर्शित होता है।

निष्कर्ष

इस लेख के अंत में, हम कह सकते हैं कि C++ में सरल वेब सर्वर हैंडलिंग वास्तव में जटिल है और HTTP क्लाइंट के अनुरोध को भेजने और प्राप्त करने के लिए पूर्ण एकाग्रता की आवश्यकता होती है। हम वेब पेज पर सामग्री को गतिशील रूप से प्रदर्शित करने के लिए वेब सर्वर कार्यक्षमता का विस्तार कर सकते हैं। उम्मीद है, यह आलेख आपके लिए उपयोगी होगा, और आप C++ में एक सरल वेब सर्वर बनाने के लिए आवश्यक चरणों को समझने के लिए इन उदाहरणों को अपने परिवेश पर चला सकते हैं।