2013-03-23 52 views
0

我試圖實現一個非常簡單的套接字服務器。我需要閱讀一些消息,以新行或其他分隔符分隔。netty 4.0輸入字節解碼

根據此文件:http://netty.io/4.0/api/io/netty/handler/codec/string/StringDecoder.htmlhttp://netty.io/4.0/api/io/netty/handler/codec/DelimiterBasedFrameDecoder.html

此代碼爲通道初始化

ChannelInitializer<SocketChannel> channelInitializer = new ChannelInitializer<SocketChannel>() { 
      @Override 
      public void initChannel(SocketChannel ch) throws Exception { 

       ch.pipeline().addLast("frameDecoder", new DelimiterBasedFrameDecoder(Delimiters.lineDelimiter())); 
       ch.pipeline().addLast("stringDecoder", new StringDecoder(CharsetUtil.UTF_8)); 

       // Encoder 
       ch.pipeline().addLast("stringEncoder", new StringEncoder(CharsetUtil.UTF_8)); 
      } 
     }; 

應該做的伎倆。

但是沒有合適的構造函數用於任何解碼器和編碼器,它們可以使用提供的參數。他們期望一些整數作爲第一個參數和一個Byte數組。只有stringDecoder似乎沒問題。

我在這裏失蹤了什麼?

+0

對不起,我不明白這個問題。你能改說嗎? – 2013-03-23 15:38:01

+0

簡而言之:從文檔中使用的示例不起作用。那就是問題所在。問題是如何正確使用它 – bazo 2013-03-23 20:36:59

回答

0

netty 4.0的內聯文檔目前已經過時 - 但它處於alpha/beta/development狀態。

引入整型參數是爲了防止無限制的緩衝區增長並指定最大幀長度。因此new LineBasedFrameDecoder(4096))new DelimiterBasedFrameDecoder(Delimiters.lineDelimiter())類似。