如果客户端错误地连接到Netty服务器,会发生什么情况?
假设我有以下解码器如果客户端错误地连接到Netty服务器,会发生什么情况?,netty,Netty,假设我有以下解码器 public class MyDecoder extends FrameDecoder1 { @Override protected Object decode( ChannelHandlerContext ctx, Channel channel, ChannelBuffer buffer)2 { if (buffer.readableBytes() < 4) { return nul
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);
}
}
公共类MyDecoder扩展了FrameDecoder1{
@凌驾
受保护对象解码(
ChannelHandlerContext(ctx、频道、频道缓冲区)2{
if(buffer.readableBytes()<4){
返回null;
}
返回缓冲区readBytes(4);
}
}
如果客户端连接并且从不发送4字节,会发生什么
1-客户端连接发送3个字节关闭连接。Netty放弃与该连接相关的所有内容,对吗?所有资源“已释放”
2-客户端连接发送3个字节,但不会关闭连接并使其保持打开状态。另一个客户端连接并执行相同的操作,然后继续。在这一点上,资源得到了正确的利用?是否有一种默认的方法来处理这个问题,或者我需要附加一个读取超时处理程序或其他什么
谢谢1)是的,一旦通道关闭,它将释放缓冲字节。
2) 看看IdleStateHandler和IDleStateWarehandler。这些将帮助您在一些不活动之后断开客户端的连接