如果客户端连接到Netty服务器时发生错误,会发生什么情况?

问题描述:

所以说我有以下的解码器...如果客户端连接到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); 
    } 
} 

如果一个客户端连接,从不发送4个字节会发生什么?

1-客户端连接发送3个字节关闭连接。 Netty放弃与该连接相关的所有资源“释放”的所有资源?

2-客户端连接发送3个字节不关闭连接并保持打开状态。另一个客户端连接并执行相同的事情,并继续。在这一点上资源是正确的?有没有一个默认的方式来处理这个问题,还是我需要附加一个读取超时处理程序或什么?

谢谢

1)是的,只要通道关闭,它将释放缓冲的字节。 2)看看IdleStateHandler和IdleStateAwareHandler。这些将有助于您在闲置后断开客户端连接。

+0

谢谢看起来不错!我会试试看! – user432024 2011-12-21 15:02:53