नेटवर्क क्लाइंट ट्यूटोरियल के पूरक के रूप में, यह ट्यूटोरियल दिखाता है कि एक साधारण वेब सर्वर को कैसे लागू किया जाए अजगर. यह सुनिश्चित करने के लिए, यह अपाचे या ज़ोप का कोई विकल्प नहीं है। BaseHTTPServer जैसे मॉड्यूल का उपयोग करके पायथन में वेब सेवाओं को लागू करने के लिए और अधिक मजबूत तरीके हैं। यह सर्वर सॉकेट मॉड्यूल का विशेष रूप से उपयोग करता है।
आपको याद होगा कि सॉकेट मॉड्यूल अधिकांश पायथन वेब सेवा मॉड्यूल की रीढ़ है। साधारण नेटवर्क क्लाइंट के साथ के रूप में, इसके साथ एक सर्वर का निर्माण पारदर्शी रूप से पायथन में वेब सेवाओं की मूल बातें दिखाता है। BaseHTTPServer स्वयं सर्वर को प्रभावित करने के लिए सॉकेट मॉड्यूल आयात करता है।
समीक्षा के माध्यम से, सभी नेटवर्क लेनदेन क्लाइंट और सर्वर के बीच होते हैं। अधिकांश प्रोटोकॉल में, ग्राहक एक निश्चित पता पूछते हैं और डेटा प्राप्त करते हैं।
प्रत्येक पते के भीतर, सर्वरों की एक भीड़ चल सकती है। सीमा हार्डवेयर में है। पर्याप्त हार्डवेयर (रैम, प्रोसेसर की गति, आदि) के साथ, एक ही कंप्यूटर एक वेब सर्वर, एक ftp सर्वर, और के रूप में सेवा कर सकता है डाक सर्वर
(पॉप, smtp, imap, या उपरोक्त सभी) एक ही समय में। प्रत्येक सेवा एक बंदरगाह से जुड़ी है। पोर्ट एक सॉकेट से बंधा हुआ है। सर्वर अपने संबंधित पोर्ट को सुनता है और उस पोर्ट पर अनुरोध प्राप्त होने पर जानकारी देता है।तो एक नेटवर्क कनेक्शन को प्रभावित करने के लिए आपको होस्ट, पोर्ट और उस पोर्ट पर अनुमत क्रियाओं को जानना होगा। अधिकांश वेब सर्वर पोर्ट 80 पर चलते हैं। हालाँकि, स्थापित Apache सर्वर के साथ संघर्ष से बचने के लिए, हमारा वेब सर्वर पोर्ट 8080 पर चलेगा। अन्य सेवाओं के साथ संघर्ष से बचने के लिए, HTTP सेवाओं को पोर्ट 80 या 8080 पर रखना सबसे अच्छा है। ये दो सबसे आम हैं। जाहिर है, अगर इनका उपयोग किया जाता है, तो आपको एक खुला पोर्ट ढूंढना होगा और उपयोगकर्ताओं को बदलाव के लिए सचेत करना होगा।
नेटवर्क क्लाइंट के साथ, आपको ध्यान देना चाहिए कि ये पते विभिन्न सेवाओं के लिए सामान्य पोर्ट नंबर हैं। जब तक ग्राहक सही पते पर सही पोर्ट पर सही सेवा के लिए पूछता है, तब भी संचार होगा। गूगल की मेल सेवा, उदाहरण के लिए, शुरू में आम पोर्ट नंबरों पर नहीं चलती थी, लेकिन, क्योंकि वे जानते हैं कि अपने खातों तक कैसे पहुंचें, उपयोगकर्ता अभी भी अपना मेल प्राप्त कर सकते हैं।
नेटवर्क क्लाइंट के विपरीत, सर्वर में सभी चर हार्डवेयर्ड हैं। कोई भी सेवा जो लगातार चलने की उम्मीद करती है, उसके कमांड लाइन पर इसके आंतरिक तर्क के चर नहीं होने चाहिए। इस पर एकमात्र भिन्नता होगी यदि, किसी कारण से, आप चाहते थे कि सेवा कभी-कभार और विभिन्न पोर्ट नंबरों पर चले। यदि यह मामला था, हालांकि, आप अभी भी सिस्टम का समय देख सकते हैं और तदनुसार बाइंडिंग बदल सकते हैं।
जैसा कि पहले ही उल्लेख किया गया है, सर्वर को उस होस्ट को जानना होगा, जिससे इसे संबद्ध किया जाना है और जिस पोर्ट पर सुनना है। हमारे उद्देश्यों के लिए, हमारे पास किसी भी होस्ट नाम पर सेवा लागू होगी।
पोर्ट, जैसा कि पहले उल्लेख किया गया है, 8080 होगा। तो ध्यान दें, यदि आप इस सर्वर का उपयोग नेटवर्क क्लाइंट के साथ करते हैं, तो आपको उस पोर्ट नंबर को बदलने की आवश्यकता होगी कार्यक्रम.
जानकारी का अनुरोध करने के लिए या उसे एक्सेस करने के लिए, सेवा करने के लिए इंटरनेट, हमें एक सॉकेट बनाने की आवश्यकता है। इस कॉल के लिए सिंटैक्स निम्नानुसार है:
पहले दो स्पष्ट रूप से इंटरनेट प्रोटोकॉल हैं। कुछ भी जो इंटरनेट पर यात्रा करता है, इन परिवारों में पहुँचा जा सकता है। कई नेटवर्क अभी भी IPv6 पर नहीं चलते हैं। इसलिए, जब तक आप अन्यथा नहीं जानते, यह IPv4 के लिए डिफ़ॉल्ट और AF_INET का उपयोग करने के लिए सबसे सुरक्षित है।
अब तक, सबसे आम प्रकार SOCK_STEAM और SOCK_DGRAM हैं क्योंकि वे IP सुइट (TCP और UDP) के दो प्रोटोकॉल पर कार्य करते हैं। बाद के तीन बहुत दुर्लभ हैं और इसलिए हमेशा समर्थित नहीं हो सकते हैं।
सॉकेट बनाने के बाद, हमें फिर सॉकेट विकल्प सेट करने की आवश्यकता है। किसी भी सॉकेट ऑब्जेक्ट के लिए, आप सेटस्कोप () विधि का उपयोग करके सॉकेट विकल्प सेट कर सकते हैं। सिंटैक्स निम्नानुसार है:
यदि हम सर्वर को कॉल करने वाले व्यक्ति को प्रतिक्रिया देना चाहते हैं, तो हम अब यह पुष्टि करने के लिए एक प्रिंट कमांड दर्ज कर सकते हैं कि सर्वर ऊपर और चल रहा है।
सर्वर सेटअप करने के बाद, हमें अब बताने की जरूरत है अजगर जब दिए गए पोर्ट पर अनुरोध किया जाता है तो क्या करें। इसके लिए हम अनुरोध को इसके मूल्य से संदर्भित करते हैं और इसे लूप करते समय एक स्थिर के तर्क के रूप में उपयोग करते हैं।
जब एक अनुरोध किया जाता है, तो सर्वर को अनुरोध स्वीकार करना चाहिए और इसके साथ बातचीत करने के लिए एक फ़ाइल ऑब्जेक्ट बनाना चाहिए।
इस स्थिति में, सर्वर पढ़ने और लिखने के लिए समान पोर्ट का उपयोग करता है। इसलिए, मेकफाइल विधि को एक तर्क 'आरडब्ल्यू' दिया जाता है। बफर आकार की अशक्त लंबाई बस फ़ाइल के उस हिस्से को गतिशील रूप से निर्धारित करने के लिए छोड़ देती है।
जब तक हम सिंगल-एक्शन सर्वर नहीं बनाना चाहते, अगला कदम फाइल ऑब्जेक्ट से इनपुट को पढ़ना है। जब हम ऐसा करते हैं, तो हमें सावधान रहना चाहिए कि अतिरिक्त व्हाट्सएप के इनपुट को छीन लिया जाए।
अनुरोध एक कार्रवाई के रूप में आएगा, इसके बाद एक पृष्ठ, प्रोटोकॉल और उपयोग किए जा रहे प्रोटोकॉल का संस्करण होगा। यदि कोई वेब पेज की सेवा करना चाहता है, तो कोई इस इनपुट को अनुरोधित पृष्ठ को पुनः प्राप्त करने के लिए विभाजित करता है और फिर उस पृष्ठ को एक चर में पढ़ता है जिसे फिर सॉकेट फ़ाइल ऑब्जेक्ट पर लिखा जाता है। एक शब्दकोश में एक फ़ाइल पढ़ने के लिए एक समारोह ब्लॉग में पाया जा सकता है।
इस ट्यूटोरियल को थोड़ा और उदाहरण देने के लिए कि सॉकेट मॉड्यूल के साथ कोई क्या कर सकता है, हम सर्वर के उस हिस्से को छोड़ देंगे और इसके बजाय यह बताएंगे कि कोई डेटा की प्रस्तुति को कैसे बदल सकता है। अगली कई पंक्तियाँ दर्ज करें कार्यक्रम.
यदि कोई एक वेब पेज भेज रहा है, तो पहली पंक्ति वेब ब्राउज़र में डेटा को पेश करने का एक अच्छा तरीका है। यदि इसे छोड़ दिया जाता है, तो अधिकांश वेब ब्राउज़र रेंडर करने के लिए डिफ़ॉल्ट होंगे एचटीएमएल. हालांकि, यदि कोई इसे शामिल करता है, तो 'ओके' का पालन किया जाना चाहिए दो नई पंक्ति वर्ण। इनका उपयोग पृष्ठ सामग्री से प्रोटोकॉल जानकारी को अलग करने के लिए किया जाता है।
पहली पंक्ति का वाक्य-विन्यास, जैसा कि आप शायद समझ सकते हैं, प्रोटोकॉल, प्रोटोकॉल संस्करण, संदेश संख्या और स्थिति है। यदि आप कभी भी चले गए वेब पेज पर गए हैं, तो आपको संभवतः 404 त्रुटि मिली है। यहां 200 संदेश केवल सकारात्मक संदेश है।
बाकी उत्पादन केवल एक वेब पेज है जो कई लाइनों में टूट गया है। आप ध्यान देंगे कि सर्वर को आउटपुट में उपयोगकर्ता डेटा का उपयोग करने के लिए प्रोग्राम किया जा सकता है। अंतिम पंक्ति वेब अनुरोध को दर्शाती है क्योंकि यह सर्वर द्वारा प्राप्त किया गया था।
अंत में, अनुरोध के समापन के रूप में, हमें फ़ाइल ऑब्जेक्ट और सर्वर सॉकेट को बंद करने की आवश्यकता है।
अब इस प्रोग्राम को पहचानने योग्य नाम के तहत सेव करें। आपके द्वारा इसे 'python program_name.py' के साथ कॉल करने के बाद, यदि आपने सेवा को चलाने के रूप में पुष्टि करने के लिए कोई संदेश दिया है, तो इसे स्क्रीन पर प्रिंट करना चाहिए। टर्मिनल तब विराम लगेगा। सब वैसा ही है जैसा होना चाहिए। अपना वेब ब्राउज़र खोलें और लोकलहोस्ट पर जाएँ: 8080। आपको तब हमें लिखी गई कमांड्स का आउटपुट देखना चाहिए। कृपया ध्यान दें कि, अंतरिक्ष के लिए, मैंने इस कार्यक्रम में त्रुटि हैंडलिंग को लागू नहीं किया। हालांकि, किसी भी कार्यक्रम को 'जंगली' में जारी किया जाना चाहिए।