netty将channel设为自动读取

​ 是这样的一个小技巧,这是我在写ss时学到的,有时候要实现私有协议需要将netty设为非自动读取,等前面工作处理好了在转变成自动读取。

​ 要实现channel数据的转发工作,第二个channel未创建完成时是不能读取第一个channel内数据的,所以我们经常将第一个channel设为不自动读取。

先前我看netty例子里有这样的写法,转换数据

1
2
3
4
5
6
7
8
9
10
out.writeAndFlush(msg).addListener(new ChannelFutureListener() {
@Override
public void operationComplete(ChannelFuture future) {
if (future.isSuccess()) {
ctx.read();
} else {
ctx.close();
}
}
});

他的意思就是将msg写入out里面,然后添加监听器,写完后再次从输入流中读取。

后来我又想到另一个效率高的写法,就是这样,将不自动读的输入流重新设为自动读,这样就不用加监听器了:

1
in.channel().config().setAutoRead(true);

netty将channel设为自动读取
https://www.huangchaoyu.com/3083647988.html
作者
hcy
发布于
2020年3月1日
更新于
2024年8月17日
许可协议