2012-10-20 32 views
10

मुझे क्लाइंट को कई कनेक्शन बनाने में सक्षम होना चाहिए। मैं नेटटी 4.0 का उपयोग करता हूं। दुर्भाग्यवश सभी मौजूदा उदाहरण दिखाते हैं कि बहुत से कनेक्शन कैसे बनाएं।नेटटी 4 एकाधिक ग्राहक

public class TelnetClient { 
    private Bootstrap b; 
    public TelnetClient() { 
     b = new Bootstrap(); 
    } 
    public void connect(String host, int port) throws Exception { 
     try { 
      b.group(new NioEventLoopGroup()).channel(NioSocketChannel.class).remoteAddress(host, port).handler(new TelnetClientInitializer()); 
      Channel ch = b.connect().sync().channel(); 
      ChannelFuture lastWriteFuture = null; 
      BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); 
      for (;;) { 
       String line = in.readLine(); 
       if (line == null) break; 
       lastWriteFuture = ch.write(line + "\r\n"); 
       if (line.toLowerCase().equals("bye")) { 
        ch.closeFuture().sync(); 
        break; 
       } 
      } 
      if (lastWriteFuture != null) lastWriteFuture.sync(); 
     } finally { 
      b.shutdown(); 
     } 
    } 
    public static void main(String[] args) throws Exception { 
     TelnetClient tc = new TelnetClient(); 
     tc.connect("127.0.0.1", 1048); 
     tc.connect("192.168.1.123", 1050); 
    //... 
    } 
} 

क्या यह सही निर्णय है? या यह बेहतर हो सकता है?

उत्तर

9

हां यह लगभग सही है .. केवल एक चीज जिसे आप बदलना चाहते हैं वह प्रत्येक कनेक्ट पर NioEventLoopGroup का निर्माण है।

NioEventLoopGroup उदाहरण महंगा हैं इसलिए उन्हें साझा किया जाना चाहिए। एक उदाहरण बनाएं और इसे बूटस्ट्रैप समूह (...) पर उसी उदाहरण को पास करके साझा करें ..

+0

और टेलनेट क्लाइंटइनेनाइज़र() के बारे में क्या, एक उदाहरण बनाने के लिए भी पर्याप्त है? – user1221483

+0

कोड पर निर्भर करता है .. क्या यह @ सराहनीय है या नहीं;)? –

+0

हां, यह Sharable – user1221483