2013-10-05 10 views
5

मैं एंड्रॉइड पर एक एप्लीकेशन विकसित कर रहा हूं जहां मैं सीमा में सभी सहकर्मियों की तलाश कर रहा हूं और बाद में उन सभी के साथ जुड़ता हूं, जिस डिवाइस ने खोज शुरू की वह समूह मालिक बन गया और अन्य सभी बन गए ग्राहक, मैंने सभी कनेक्शन चीजें की हैं लेकिन अब मैं समूह के मालिक को सभी कनेक्टिंग साथियों को संदेश भेजने के लिए चाहता हूं, इसे कैसे प्राप्त करें और कृपया मुझे बताएं कि पीयर-टू-पीयर संचार में पद्धति क्या है, क्या पी 2 पी एंड्रॉइड में भी डेटा भेजने और प्राप्त करने के लिए आईपी का उपयोग करें?एंड्रॉइड वाई-फाई डायरेक्ट नेटवर्क

धन्यवाद तालिब का सम्मान करता है।

+0

क्या आप अपने प्रयासों में सफल रहे? यदि हां, तो कृपया मुझे बताएं, मुझे एक ही समस्या का सामना करना पड़ रहा है और समाधान प्राप्त करने में असमर्थ है। सभी संभावित दस्तावेजों को कम कर दिया है लेकिन कोई सफलता नहीं है :(:( –

उत्तर

10

वाई-फाई डायरेक्ट/पी 2 पी को सामान्य वाई-फाई के रूप में माना जा सकता है, लेकिन जहां समूह के मालिक (जीओ) सॉफ़्टवेयर एक्सेस पॉइंट (डीएचसीपी सर्वर, प्रोविजनिंग इत्यादि) के रूप में कार्य करते हैं। तो अपने अंतिम प्रश्न का उत्तर देने के लिए, हाँ वाई-फाई डायरेक्ट डेटा भेजने और प्राप्त करने के लिए आईपी का भी उपयोग करता है।

आप समूह के सभी सदस्यों को डेटा भेजना चाहते हैं? इसके लिए दो समाधान हैं:

  1. मल्टीकास्ट का उपयोग करके संदेश को प्रसारित करें।
  2. समूह में प्रत्येक व्यक्तिगत ग्राहक को संदेश भेजें।

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

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

क्लाइंट कोड

private static final int SERVER_PORT = 1030; 

... // on group join: 
wifiP2pManager.requestConnectionInfo(channel, new ConnectionInfoListener() { 
    @Override 
    public void onConnectionInfoAvailable(WifiP2pInfo p2pInfo) { 
     if (!p2pInfo.isGroupOwner) { 
      // Joined group as client - connect to GO 
      Socket socket = new Socket(); 
      socket.connect(new InetSocketAddress(p2pInfo.groupOwnerAddress, SERVER_PORT)); 
     } 
    } 
}); 

समूह स्वामी कोड:

private static final int SERVER_PORT = 1030; 
private ArrayList<InetAddress> clients = new ArrayList<InetAddress>(); 

public void startServer() { 
    clients.clear(); 
    ServerSocket serverSocket = new ServerSocket(SERVER_PORT); 

    // Collect client ip's 
    while(true) { 
     Socket clientSocket = serverSocket.accept(); 
     clients.add(clientSocket.getInetAddress()); 
     clientSocket.close(); 
    } 
} 

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

+0

विचार अच्छा है, लेकिन कार्यान्वयन मेरे मामले में काम नहीं कर रहा है। समूह के मालिक से क्लाइंट को संदेश भेजने में असमर्थ। क्या आप @nikki एशटन की मदद कर सकते हैं? –

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