एंड्रॉइड में HTTP सर्वर कैसे बनाएं? [बन्द है]


116

मैं क्लाइंट के लिए कुछ सामग्री परोसने के लिए एंड्रॉइड में एक सरल HTTP सर्वर बनाना चाहूंगा।

सर्वर बनाने या किसी मौजूदा लाइब्रेरी का उपयोग करने के बारे में कोई सलाह?


यदि आप चाहते हैं कि सभी एक वेब सर्वर है, तो आप इस ट्यूटोरियल की जाँच कर सकते हैं: devlper.com/2010/12/… और इसका नमूना: code.google.com/p/krvarma-android-samples/source/browse/… । वे दोनों बहुत बूढ़े हैं, लेकिन कुछ मोड़ के बाद भी यह ठीक काम करेगा।
Android डेवलपर

जवाबों:


131

: इस एक पर विचार करें https://github.com/NanoHttpd/nanohttpd । बहुत छोटा, जावा में लिखा है। मैंने बिना किसी समस्या के इसका उपयोग किया।


गजब का। शायद एक महीने का काम बचा लिया। क्या आप इसे किसी व्यावसायिक उत्पाद में उपयोग कर सकते हैं?
इवान जी।

आपको संशोधित बीएसडी लाइसेंस के बारे में पढ़ना चाहिए। यदि यह वाणिज्यिक उत्पाद में कोड का उपयोग करने की अनुमति देता है या नहीं।
दमलु

2
मैं अपने html पृष्ठ में चित्र प्रदर्शित करने के लिए प्रतीत नहीं हो सकता। छवियों को दिखाने के लिए HTML में किस निर्देशिका का उपयोग किया जाना चाहिए? धन्यवाद।
शेन ओलिवर

छवियों के लिए पथ HTML पृष्ठ को फिर से शुरू करने के सापेक्ष है। यह http सर्वर की समस्या नहीं है, यह खराब है html ..
डैमलूआर

क्या मैं एक फाइल परोस सकता हूं, जिसे वर्तमान में होमडायर में जोड़ा जा रहा है। उदाहरण के लिए, मैं HomeDir (javacode का उपयोग करके) में f1 नामक फ़ाइल की प्रतिलिपि बना रहा हूँ। अब फ़ाइल की प्रतिलिपि चल रही है और यदि कोई फ़ाइल f1 के लिए अनुरोध भेजता है तो क्या सर्वर अनुरोध को संसाधित करेगा?
अश्विन एन भानुशाली

23

NanoHttpd एंड्रॉइड पर एक आकर्षण की तरह काम करता है - हमारे पास उत्पादन का कोड है, उपयोगकर्ताओं के हाथों में, जो उस पर बनाया गया है।

लाइसेंस बिल्कुल भी नैनो वायरलैड के व्यावसायिक उपयोग की अनुमति देता है, बिना किसी "वायरल" निहितार्थ के।


1
मुझे इसका उपयोग करने का एक ट्यूटोरियल / नमूना कहां मिल सकता है? उदाहरण के लिए, डिवाइस पर स्थित किसी फ़ाइल की सेवा करने के लिए, ताकि अन्य इसे डाउनलोड कर सकें (या इसमें से स्ट्रीम करें)?
एंड्रॉयड डेवलपर

9

यह ServerSocket का उपयोग करके किया जा सकता है , जैसे कि JavaSE पर। यह क्लास एंड्रॉइड पर उपलब्ध है।android.permission.INTERNETआवश्यक है।

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

यदि आपको उस उपयोगकर्ता को बताने की आवश्यकता है जिस पर आईपी सर्वर सुन रहा है, तो NetworkInterface .getNetworkInterfaces () का उपयोग करें , यह प्रश्न अतिरिक्त चाल बता सकता है।

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


6

एक अन्य सर्वर जिसे आप http://tjws.sf.net आज़मा सकते हैं , वास्तव में यह पहले से ही एंड्रॉइड सक्षम संस्करण प्रदान करता है।


1
यह एंड्रॉइड मानकों (100kb) द्वारा वसा है। अच्छा है अगर आप अपने ऐप में केवल साधारण फ़ाइल सेवारत या एक दूरस्थ कॉन्फ़िगरेशन / डिबग / स्थिति इंटरफ़ेस के बजाय जावा में एक गंभीर सर्वर चाहते हैं।
आहॉक्स


3

यदि आप कोटलिन का उपयोग कर रहे हैं, तो इन पुस्तकालय पर विचार करें। यह कोटलिन भाषा के लिए निर्मित है। https://github.com/weeChanc/AndroidHttpServer https://github.com/ktorio/ktor

AndroidHttpServer बहुत छोटा है, लेकिन सुविधा कम भी है।

Ktor एक बहुत अच्छी लाइब्रेरी है, और उपयोग भी सरल है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.