2012-10-14 12 views
5

मैं एक एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं जो डिवाइस कनेक्शन के लिए टीसीपी का उपयोग करता है। समस्या यह है कि मैं सॉकेट प्रोग्रामिंग के लिए नया हूँ। मैंने सफलतापूर्वक एक सर्वर और क्लाइंट कोड बनाया है। प्रत्येक क्लाइंट सर्वर से कनेक्ट हो सकता है और सर्वर क्लाइंट को जवाब दे सकता है। लेकिन मैं सर्वर को एक ही समय में सभी जुड़े क्लाइंट को संदेश भेजने के लिए प्रतीत नहीं कर सकता। सर्वर को क्लाइंट को संदेश प्रसारित करने के लिए क्या कदम हैं?एंड्रॉइड टीसीपी सर्वर प्रसारण

ServerSocket server = null; 
try { 
    server = new ServerSocket(9092); // start listening on the port 
} catch (IOException e) { 
    Log.d("btnCreate onClick", "Could not listen on port: 9092"); 
} 
Socket client = null; 
while(true) { 
    try { 
     client = server.accept(); 
    } catch (IOException e) { 
     Log.d("btnCreate onClick", "Accept Failed"); 
    } 
    //start a new thread to handle this client 
    Thread t = new Thread(new ClientConn(client)); 
    t.start(); 
} 

और सर्वर धागा:

class ClientConn implements Runnable { 
    private Socket client; 

    ClientConn(Socket client) { 
     this.client = client; 
    } 

    public void run() { 
     BufferedReader in = null; 
     PrintWriter out = null; 
     try { 
      /* obtain an input stream to this client ... */ 
      in = new BufferedReader(new InputStreamReader(
         client.getInputStream())); 
      /* ... and an output stream to the same client */ 
      out = new PrintWriter(client.getOutputStream(), true); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      return; 
     } 

     String msg; 
     try { 
      while ((msg = in.readLine()) != null) { 
       Log.d("ClientConn", "Client says: " + msg); 
       out.println(msg); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

क्या आप समझा सकते हैं कि आपके संदर्भ में "प्रसारण" से आपका क्या मतलब है? टीसीपी प्रसारण नहीं किया है। –

+0

मेरा प्रश्न संपादित किया गया। मैं सर्वर को सभी जुड़े ग्राहकों को एक संदेश भेजना चाहता हूं। क्या इसे प्रसारण कहा जाता है? मैं सॉकेट प्रोग्रामिंग के लिए नया हूँ। –

उत्तर

4

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

अपने सर्वर को सभी ग्राहकों को एक ही संदेश भेजने के लिए, सर्वर को प्रत्येक क्लाइंट के लिए प्रत्येक सॉकेट पर एक संदेश भेजना होगा।

+0

तो मुझे अपने सभी क्लाइंट के आईपी स्टोर करना चाहिए, और फिर उन सभी को एक-एक संदेश भेजना चाहिए? मुझे कोड कहां रखना चाहिए? क्लाइंटकॉन पर? –

+1

आपके द्वारा पोस्ट किए गए कोड (क्लाइंटकॉन' में) के अनुसार आपके पास प्रत्येक क्लाइंट के पास पहले से ही एक खुली सॉकेट हैंडल है। तो आपको उस क्लास को अपने 'क्लाइंट' सॉकेट पर संदेश भेजने के लिए बस कुछ रास्ता चाहिए। –

+0

ठीक है, मैं कोशिश करूंगा और आपको बता दूंगा। प्रबुद्धता के लिए धन्यवाद। : डी –

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