2011-12-20 15 views
0

だから、クライアントが接続し、決して4つのバイトを送信した場合はどうなりますか?クライアントがNettyサーバーへの接続に失敗した場合はどうなりますか?

public class MyDecoder extends FrameDecoder1 { 

    @Override 
    protected Object decode(
      ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer)2 { 

     if (buffer.readableBytes() < 4) { 
      return null; 
     } 

     return buffer.readBytes(4); 
    } 
} 

...私は、次のデコーダを持っていると言いますか

1-クライアント接続は3バイトを送信して接続を切断します。 Nettyは、その接続に関連するすべてのリソースを「解放」する権利をすべて破棄しますか?

2 - クライアント接続送信3バイトは接続を閉じず、開いたままにします。別のクライアントが接続して同じことを行い、それが続行されます。この時点でリソースは正しく取得されていますか?これを処理する既定の方法はありますか、または読み取りタイムアウトハンドラなどを添付する必要はありますか?

おかげ

答えて

1

1)はい、すぐにチャンネルが閉じていると、それはバッファリングされたバイトを解放します。 2)IdleStateHandlerとIdleStateAwareHandlerを見てください。これらは、何もしなくてもクライアントを切断するのに役立ちます。

+0

ありがとうございます!私はそれを試してみます! – user432024

関連する問題