मुझे पायथन में एक बहुत ही सरल वेब-सर्वर-जैसे ऐप को लागू करने की आवश्यकता है जो मूल HTTP अनुरोध और प्रतिक्रियाएं करेगा और वेब पेज पर बहुत ही मूल आउटपुट प्रदर्शित करेगा। मैं वास्तव में पाइथन में कोडिंग के बारे में बहुत चिंतित नहीं हूं, लेकिन मुझे यकीन नहीं है कि कहां से शुरू करना है? इसे कैसे सेट करें? एक फाइल? एकाधिक फाइलें? मुझे लगता है कि मुझे इस बात से कोई जानकारी नहीं है कि यह एक "सर्वर" है - इसलिए मैं HTTP अनुरोध/सॉकेट/प्रोसेसिंग अनुरोधों आदि से निपटने के तरीके से अपरिचित हूं। कोई सलाह? संसाधन?किसी भी पुस्तकालयों का उपयोग किए बिना पाइथन का उपयोग करके मैं एक सरल वेब सर्वर को कैसे कार्यान्वित कर सकता हूं?
उत्तर
आप इस उद्देश्य के लिए socket programming का उपयोग कर सकते हैं। निम्नलिखित स्निपेट TCP सॉकेट बनाता है और http अनुरोधों के लिए पोर्ट 9000 पर सुनता है:
from socket import *
def createServer():
serversocket = socket(AF_INET, SOCK_STREAM)
serversocket.bind(('localhost',9000))
serversocket.listen(5)
while(1):
(clientsocket, address) = serversocket.accept()
clientsocket.send("HTTP/1.1 200 OK\n"
+"Content-Type: text/html\n"
+"\n" # Important!
+"<html><body>Hello World</body></html>\n")
clientsocket.shutdown(SHUT_WR)
clientsocket.close()
serversocket.close()
createServer()
सर्वर, $ python server.py
शुरू करो। अपने वेब ब्राउज़र में http://localhost:9000/
खोलें (जो क्लाइंट के रूप में कार्य करता है)। फिर ब्राउज़र विंडो में, आप "हैलो वर्ल्ड" (http प्रतिक्रिया) टेक्स्ट देख सकते हैं।
संपादित करें ** पिछले कोड केवल क्रोम पर परीक्षण किया गया था, और जैसा कि आप लोग अन्य ब्राउज़र के बारे में सुझाव दिया, कोड के रूप में संशोधित किया गया था:
- प्रतिक्रिया http एक जैसे आप मैदान में भेज सकते हैं बनाने के लिए http संस्करण 1.1 के साथ हेडर, स्टेटस कोड 200 ठीक है और सामग्री-प्रकार टेक्स्ट/एचटीएमएल।
- प्रतिसाद देने के बाद ग्राहक सॉकेट को बंद करने की आवश्यकता है क्योंकि यह एक टीसीपी सॉकेट है।
- ठीक से ग्राहक सॉकेट को बंद करने के
shutdown()
socket.shutdown vs socket.close
के नाम से जाना तो कोड, क्रोम पर परीक्षण किया गया था फ़ायरफ़ॉक्स (http://localhost:9000/) और टर्मिनल में सरल कर्ल (कर्ल http://localhost:9000) की जरूरत है।
-1। क्या आपने यह कोशिश की? यह बिल्कुल काम नहीं करता है; यह एक सॉकेट सर्वर है, लेकिन HTTP नहीं बोलता है। – Ashe
यह वास्तव में HTTP बोलता नहीं है, इसलिए लगभग हर ब्राउज़र इसके साथ काम नहीं करेगा। यह क्रोम में काम नहीं करता है। यदि आप स्टॉप बटन दबाते हैं तो यह केवल फ़ायरफ़ॉक्स में काम करता है। यह एक वेब सर्वर नहीं है। – Ashe
मैंने आपकी लिपि की प्रतिलिपि बनाई है और मुझे एक त्रुटि मिल रही है कि 'बाइट-जैसी ऑब्जेक्ट की आवश्यकता नहीं है' 'मैं इसे कैसे ठीक करूं? – Simon
आपको SimpleHttpServer (py3: http.server) मॉड्यूल देखना चाहिए।
आप जो करने की कोशिश कर रहे हैं उसके आधार पर, आप या तो इसका उपयोग कर सकते हैं, या मॉड्यूल के स्रोत (py2, py3) विचारों के लिए देख सकते हैं।
यदि आप अधिक निम्न स्तर प्राप्त करना चाहते हैं, तो SimpleHttpServer BaseHttpServer (source) को केवल यह काम करने के लिए बढ़ाता है।
आप, यहां तक कि अधिक निम्न स्तर प्राप्त SocketServer (स्रोत: py2, py3) पर एक नज़र लेने के लिए चाहते हैं।
लोग अक्सर python -m SimpleHttpServer
(या python3 -m http.server
) जैसे पायथन चलाएंगे यदि वे सिर्फ एक निर्देशिका साझा करना चाहते हैं: यह एक पूरी तरह से कार्यात्मक और ... सरल सर्वर है।
मैं शायद कहूंगा कि आपको पहले HTTP दस्तावेज़ों की जांच करनी चाहिए। आरएफसी की तरह। – zinking
- 1. मैं गॉसियन किसी भी अंतर्निर्मित गाऊशियन कार्यों का उपयोग किए बिना एक छवि को कैसे धुंधला कर सकता हूं?
- 2. डेटाबेस का उपयोग किए बिना मैं अपने ऐप की कॉन्फ़िगर कैसे सहेज सकता हूं ??? (सरल टेक्स्टफाइल का उपयोग करके)
- 3. मैं नॉकआउट का उपयोग करके एक अस्पष्ट समय दिनांक प्रतिस्थापन को कैसे कार्यान्वित कर सकता हूं?
- 4. मैं JQuery संस्करण का उपयोग किए बिना JQuery संस्करण का उपयोग कैसे कर सकता हूं?
- 5. मैं ASP.NET का उपयोग करके एक बहुत ही सरल वेब प्रॉक्सी कैसे बना सकता हूं?
- 6. आईफोन पर कोर प्लॉट का उपयोग करके मैं स्टॉक वॉल्यूम चार्ट कैसे कार्यान्वित कर सकता हूं?
- 7. क्या मैं पूर्ण स्क्रीन दृश्य का उपयोग किए बिना आईओएस जीएलकिट का उपयोग कर सकता हूं?
- 8. पाइथन डेटाबेस Django (Heroku के लिए) का उपयोग किए बिना
- 9. क्या मैं सर्वर से डिस्कनेक्ट किए बिना HttpWebRequest का पुन: उपयोग कर सकता हूं?
- 10. रूबी और यूनिक्स सर्वर का उपयोग करके मैं वेब पेजों के स्क्रीनशॉट कैसे ले सकता हूं?
- 11. अमरूद का उपयोग करके मैं यह कैसे कर सकता हूं?
- 12. क्या मैं नए उपयोग किए बिना सी ++ में फैक्टरी विधि पैटर्न को कार्यान्वित कर सकता हूं?
- 13. पाइथन का उपयोग कर वेब स्क्रैपिंग डेटा?
- 14. किसी भी एसएसक्यूएल प्रकार के डीबी का उपयोग करके आप ट्विटर को कैसे कार्यान्वित करेंगे?
- 15. jsfiddle का उपयोग करना: मैं underscore.js या backbone.js पुस्तकालयों का उपयोग कैसे कर सकता हूं?
- 16. UIWebView का उपयोग करके, क्या मैं एक कस्टम फ़ॉन्ट का उपयोग कर सकता हूं?
- 17. मैं Google वेब टूलकिट का उपयोग करके चित्रों को कैसे आकर्षित कर सकता हूं?
- 18. क्या मैं विजुअल स्टूडियो को स्थापित किए बिना mstest.exe का उपयोग कर सकता हूं?
- 19. मैं सी ++ में पाइथन पुस्तकालयों का उपयोग कैसे करूं?
- 20. मैं AppDomains का उपयोग किए बिना .net प्लगइन्स को कैसे कार्यान्वित करूं?
- 21. पायथन का उपयोग करके, मैं विंडोज नेटवर्क पर साझा फ़ोल्डर का उपयोग कैसे कर सकता हूं?
- 22. जावा का उपयोग करके एफ़टीपी को कैसे कार्यान्वित करें?
- 23. मैं जावास्क्रिप्ट का उपयोग किए बिना एसवीजी में ऑफसेट पथ प्रभाव को कैसे कार्यान्वित कर सकता हूं या फिल्टर मिटा सकता/मिटा सकता हूं?
- 24. jQuery का उपयोग करके, मैं वर्तमान टैब पर क्लिक प्रभाव को कैसे अक्षम कर सकता हूं?
- 25. मैं एचएमवीसी आर्किटेक्चर का उपयोग किसके लिए कर सकता हूं?
- 26. किसी भी डेटाबेस का उपयोग किए बिना हाइबरनेट मानदंड क्वेरी का परीक्षण कैसे करें?
- 27. Wix का उपयोग करके मैं एक एएसपीनेट वेब एप्लिकेशन
- 28. मैं std :: copy का उपयोग करके एक मानचित्र को दूसरे में कैसे कॉपी कर सकता हूं?
- 29. मैं कैसे कार्यान्वित कर सकता हूं boost :: spirit :: lex का उपयोग कर निर्देश शामिल करें?
- 30. रूबी स्प्रेडशीट लाइब्रेरी का उपयोग करके मैं एक विशिष्ट सेल को कैसे प्रारूपित कर सकता हूं?
अपनी आवश्यकताओं को और जानें (और क्यों)। क्या आप पूर्ण एप्लिकेशन-स्तरीय स्टैक को कार्यान्वित करना चाहते हैं, या आप इसका उपयोग कर सकते हैं उदा। अमरीका की एक मूल जनजाति? आपको जो चाहिए उसे और बताएं * और क्यों। * अंत में, जब आपके पास "websocket" टैग होता है, तो क्या आपका मतलब यह है कि क्या यह उपयोग करने के लिए सिर्फ एक गलत टैग था? –
* किसी भी * पुस्तकालयों का उपयोग किए बिना? निश्चित रूप से कम से कम 'सॉकेट' की आवश्यकता होगी? – geoffspear
[यह दस्तावेज़ीकरण] जांचें (http://docs.python.org/library/simplehttpserver.html) पृष्ठ, यहां मुझे लगता है कि "कोई भी पुस्तकालय" पुस्तकालय हैं जो पायथन स्थापना में शामिल नहीं हैं। –