0

非常に単純なソケット サーバーを実装しようとしています。改行またはその他の区切り記号で区切られたいくつかのメッセージを読む必要があります。

このドキュメントによると: http://netty.io/4.0/api/io/netty/handler/codec/string/StringDecoder.htmlおよびhttp://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 のみが問題ないようです。

ここで何が欠けていますか?

4

1 に答える 1

0

netty 4.0のインラインドキュメントは現在古くなっていますが、アルファ/ベータ/開発状態にあります。

整数パラメーターは、無制限のバッファーの増大を防ぐために導入され、最大フレーム長を指定します。

したがってnew LineBasedFrameDecoder(4096))、に似ていnew DelimiterBasedFrameDecoder(Delimiters.lineDelimiter())ます。

于 2013-03-23T21:22:53.907 に答える