2011-09-01 14 views
7

पर एक HTTP सर्वर को लागू करने के मैं एक ही लैन पर दो एंड्रॉयड अनुप्रयोगों वाईफ़ाई द्वारा प्रदान की है:कैसे एंड्रॉयड

  1. अनुप्रयोग (ए) कि पोर्ट 8033
  2. अनुप्रयोग (बी) पर एक सुन सॉकेट खोलने कि पोर्ट 8033

पर यह सुनिश्चित करने के लिए एचटीपी क्लाइंट का उपयोग करें (ए) पोस्ट कर सकते हैं और बी (बी) पर अनुरोध प्राप्त कर सकते हैं?
(ए) तक पहुंचने वाला यूआरएल (बी) किस तरह दिखता है?

सभी को धन्यवाद।

+0

@ जोनास का सवाल यह नहीं है कि कोई ग्राहक सर्वर से बात कर सकता है, बल्कि यह है कि क्या HttpClient सर्वर सॉकेट से संवाद कर सकता है कि उसका दूसरा ऐप सुन रहा है या नहीं। –

उत्तर

12

आप दो अलग-अलग नेटवर्किंग संचार को भ्रमित कर सकते हैं।

स्तर 4: दो सॉकेट के बीच टीसीपी कनेक्शन। ब्राउज़र/अनुप्रयोग सर्वर इस्तेमाल किया विशेष संचार 'भाषा':
ओर करने के लिए के बीच एक तार्किक पाइप (? एकल हो सकता है (दो प्रक्रिया) या दो अलग कंप्यूटरों) केवल कनेक्शन से निपटने डेटा इस स्तर

लेवल 7 पर संभाल रहे हैं उच्च स्तरीय डेटा (फ़ाइल, छवियों, ऑडियो ..) का आदान-प्रदान करने के लिए और इस स्तर पर संभाला जाता है।

आपका प्रश्न एक सुनवाई सॉकेट (स्तर 4) खोलने वाला है और एक क्लाइंट जो HTTP प्रोटोकॉल (स्तर 7) के साथ इसके साथ बात करता है।

तो आप HTTP प्रोटोकॉल
को संभालने के लिए अंतराल सॉकेट सुनने की ओर भरने से चूक जाते हैं, जावा वेब सर्वर कार्यान्वयन आपकी मदद कर सकता है।

+0

ठीक है धन्यवाद। लेकिन मुझे एंड्रॉइड और टीजेडब्ल्यूएस का कामकाजी उदाहरण कहां मिल सकता है। मैंने यूआरएल को देखा लेकिन मैं जावा में एक पूर्ण नोब हूं इसलिए अगर मुझे कुछ कोड मिल जाए तो मेरे लिए इसे समझना बहुत आसान होगा। – KhanZeeshan

+0

छोटे जावा वेब सर्वर जेईई (जावा एंटरप्राइज़ संस्करण) द्वारा परिभाषित मानक सर्वलेट कंटेनर को लागू करते हैं: तो मेरी सलाह 1 है) "एंड्रॉइड प्रोजेक्ट में थर्ड पार्टी लाइब्रेरी/जार को कैसे कार्यान्वित करें" 2) जावा मानक संस्करण का थोड़ा और सीखें (क्लासिक) और एंटरप्राइज़ संस्करण (एप्लिकेशन सर्वर के लिए जावा के लिए सामान्य रूप से प्रयुक्त) उदाहरण के रूप में देखें http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets.html .. नमूना http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-First-Servlets.html –

+0

मैं इस लिंक पर आया "http://www.androiddevblog.net/android/a-bare- न्यूनतम-वेब-सर्वर-एंड्रॉइड-प्लेटफॉर्म "जो मैं वही कर रहा हूं जो मुझे लगता है कि मैं क्या चाहता हूं। क्या आप सहमत होंगे? – KhanZeeshan

1

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

यदि आपको केवल दो प्रक्रियाओं को किसी तरह से संवाद करने की आवश्यकता है, तो हो सकता है कि आप अपने सर्वर ऐप को सेवा से बेहतर कर सकें और फिर आपका क्लाइंट ऐप आवश्यक डेटा के लिए इस सेवा से पूछताछ कर सके।

+0

मैं सर्वर सॉकेट को HTTP प्रोटोकॉल को कैसे समझ सकता हूं और खेद है कि मैं लिखना भूल गया क्लाइंट अन्य एंड्रॉइड डिवाइस पर होगा और सर्वर अलग-अलग होगा। – KhanZeeshan

+0

"भौतिक पाइप" एक प्रतिबंधित बिंदु हो सकता है ... एक ही डिवाइस पर आपके पास एक सुनवाई सॉकेट और क्लाइंट हो सकता है। बिना किसी भौतिक लिंक के –

+0

मुझे HTTP क्लाइंट के कई उदाहरण मिले हैं जो जावा में वेबसर्वर और सामान्य सर्वर और क्लाइंट सॉकेट संचार से पूछताछ करते हैं लेकिन मुझे सर्वर सॉकेट उदाहरण पर कोई उदाहरण नहीं मिला जो HTTP-प्रोटोकॉल और ऐसे लागू करता है। – KhanZeeshan

1

मैं एक ही समाधान की तलाश में था और नैनो एचटीटीपीडी - एक बेहद सरल HTTP अनुरोध हैंडलिंग सर्वर वर्ग। आप https://github.com/NanoHttpd