2013-06-10 8 views
8

जब आप एंड्रॉइड में ब्लूटूथ या वाईफाई डायरेक्ट के साथ काम करते हैं, तो सभी हैंडशेकिंग के अंत में, और आप सॉकेट के साथ हवाएं करते हैं।हाई लेवल प्रोटोकॉल?

टीसीपी/आईपी के साथ, हमारे पास zillion-plus-one पुस्तकालय हैं जो उच्च स्तरीय प्रोटोकॉल के लिए सॉकेट के शीर्ष पर परत: HTTP, XMPP, IMAP, आदि। इन पुस्तकालयों की सौजन्य, हम अधिक डोमेन से निपट सकते हैं लाइब्रेरी द्वारा संचालित निम्न-स्तरीय सॉकेट नलसाजी के साथ, एक ऑपरेशन के विशिष्ट अबास्ट्रक्शन (उदाहरण के लिए, "इस फ़ाइल को डाउनलोड करें")।

प्रश्न: वहाँ समकक्ष थे, किसी भी उच्च स्तरीय प्रोटोकॉल, कि Android की Bluetooth और/या वाईफाई डायरेक्ट परतों के माध्यम से उत्पादन किया सॉकेट के साथ काम करने में जाना जाता है (या काम करने की संभावना है) के लिए?

अभी, मैं विशिष्ट प्रोटोकॉल के बारे में चिंतित नहीं हूं - मैं डेवलपर्स के लिए कनेक्टिविटी विकल्पों के इन प्रकारों का उपयोग करने के लिए इस तरह के प्रोटोकॉल परत के उदाहरणों की तलाश कर रहा हूं।

उदाहरण के लिए, ऐसा लगता है कि मैं OkHTTP के लिए एक कांटा या ऐड-ऑन बना सकता हूं जो सॉकेट के लिए वैकल्पिक स्रोत का उपयोग करता है, और शायद मैं जावा HTTP सर्वर बना सकता हूं जो ऐसा करता है। उनको देखते हुए, ऐप डेवलपर्स ब्लूटूथ या वाईफाई डायरेक्ट (और, क्लाइंट साइड पर कम से कम HTTP ऐप्स लिखेंगे, जो कनेक्टिविटी-विशिष्ट जोड़ी और हैंडशेकिंग चलने के बाद कोडिंग को काफी "प्राकृतिक" महसूस करना चाहिए)।

IOW, कच्चे सॉकेट के साथ वापस निपटने के लिए जा रहा महसूस करता है तो दो दशक पहले ... :-)

धन्यवाद!


अद्यतन

ZeroMQ जवाब पर क्रिस्टोफ़र Micinski की टिप्पणी के आधार पर मैंने सोचा कुछ स्पष्टीकरण के क्रम में हो सकता है।

यह कहना आसान है कि मैं नहीं चाहता हूं: मैं उन्हें बनाने के बाद सॉकेट को छूना नहीं चाहता हूं। उच्च स्तर पर कुछ और मेरे लिए उनको संभाल लेना चाहिए, साथ ही साथ "प्रोटोकॉल" को संभालने के लिए जो कुछ मैं मानता हूं उसे संभालना चाहिए (उदाहरण के लिए, जब कुछ संचार ऑपरेशन समाप्त हो जाता है, सॉकेट बंद होने से परे)।

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

  • तुम सच में सॉकेट स्तर पर काम कर रहे हैं, तो आप कुछ प्रोटोकॉल प्रमाणीकरण को संबोधित करने की आशा है कि लागू करने होगी,: उदाहरण काम करते हैं, आप वास्तविक जीवन में ऐसा ही कुछ कभी नहीं लिखना चाहते हैं त्रुटि हैंडलिंग, आदि, तो आप अपने आप को प्रोटोकॉल

  • कुछ डेवलपर्स इंटरनेट के संचालन के लिए आज सॉकेट के साथ सीधे काम

अब चल रहे हैं, भले ही, यह शांत करता है, तो प्रोटोकॉल द्वारा की पेशकश की होगी परत कुछ डेवलपर्स टी का इस्तेमाल किया गया था ओ (उदाहरण के लिए, HTTP) या अगर उन्होंने इसका उपयोग नहीं किया है (उदाहरण के लिए, एक्सएमपीपी) के बारे में सुना था। और मैं सरल परिदृश्यों के लिए बसूंगा (उदाहरण के लिए, एन-वे समर्थन अच्छा है लेकिन आवश्यक नहीं है)। इस संबंध में, प्रारंभिक शोध (नींद से वंचित मस्तिष्क द्वारा आयोजित) के आधार पर, ज़ीरोएमक्यू एक बुरा विकल्प नहीं है।एक एक्सएमपीपी स्टैक की तुलना में इसमें "ब्रांड पहचान" की कमी है, जो मनमाने ढंग से सॉकेट के साथ काम कर सकती है। लेकिन कफ से यह लगता है कि मैं और क्या देख रहा हूं।

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

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

+0

http://stackoverflow.com/questions/5041426/peer-to-peer-communication- विकल्प? –

उत्तर

2

मुझे सॉकेट कनेक्शन के प्रबंधन के लिए उपयोगी होने के लिए ZeroMQ मिला। उनके पास कई भाषाओं में एक समर्थन है जिसमें जावा शामिल है। एक बार जब आप वाईफाई-डायरेक्ट या बीटी पर कनेक्शन स्थापित कर लेंगे तो आप इसे सॉकेट प्रबंधित करने के लिए उपयोग कर सकते हैं।

+0

इसमें संभावनाएं हैं, हालांकि कम से कम पहली नज़र में, यह अभी भी थोड़ा कम स्तर महसूस करता है। मुझे इस पर कुछ और शोध करने दें। बहुत धन्यवाद! – CommonsWare

+0

ज़ीरोएमक्यू संदेश कतारों के क्षेत्र में एक अच्छा कंडिट है, लेकिन विशेष रूप से ब्लूटूथ/वाईफाईडायरेक्ट का उपयोग करते समय उत्पन्न होने वाले नरक को संबोधित नहीं करता है। जब आप अपना प्रोटोकॉल रोल करना चाहते हैं तो ज़ीरोएमक्यू भी सबसे उपयोगी है। मुझे लगता है कि @ कॉमन्सवेयर कुछ ऐसा चाहता है जहां आप विपरीत कर सकें: मौजूदा चीजों के तहत एंड्रॉइड की चीजें फेंक दें। (फिर भी, ज़ीरोएमक्यू चट्टानें!) –

+0

@ क्रिस्टोफरमिसिंस्की: मैंने आपके प्रश्नों को संबोधित करने की उम्मीद में अपने प्रश्न पर विस्तार से बताया। – CommonsWare

0

मुझे पता है कि यह कुछ हद तक पुराना प्रश्न है और पहले ही उत्तर दिया गया है लेकिन मैं योगदान देना चाहता हूं।

मैं इस अनुप्रयोग किया: https://play.google.com/store/apps/details?id=com.budius.WiFiShoot और यह क्या मेरी दुखी उपयोगकर्ताओं, मैं सभी संचार उत्कृष्ट https://github.com/EsotericSoftware/kryonet

का उपयोग कर से निपटने कर रहा हूँ के सबसे का कारण बनता है है हालांकि वाईफाई डायरेक्ट कनेक्शन n हाथ मिलाना कुछ हद तक टूट गया है और और मेरे कोड है आप अपने उदाहरणों पर जो कुछ देखते हैं, क्रिएओ, रजिस्टर क्लास, ओपन सर्वर, क्लाइंट को सर्वर आईपी से कनेक्ट करें और फाइल जानकारी के साथ ऑब्जेक्ट शूट करें और बाद में मैं इस कोड का उपयोग करके वास्तविक फाइलों को शूट करता हूं https://code.google.com/p/kryonet/source/browse/trunk/kryonet/test/com/esotericsoftware/kryonet/InputStreamSenderTest.java

उम्मीद है कि इससे मदद मिलती है।

संबंधित मुद्दे