NioServerSocketChannel中pipeline的read和write问题
来源:6-2 pipeline初始化

慕仙2255957
2019-06-22
1、下面的SeverHandler是添加到创建NioServerSocketChannel时创建的pipeline中,它的读写机制是怎么实现的呢??
2、截图二中的channelRead方法在客户端连接过来后被调用,它是在哪里注册的read事件的??
3、截图二中的ctx.channel().write()有什么意义?? , 因为这个SeverHandler是在创建NioServerSocketChannel时创建的pipeline中,它应该不能写到客户端吧???
1回答
-
1、下面的SeverHandler是添加到创建NioServerSocketChannel时创建的pipeline中,它的读写机制是怎么实现的呢??
对于 NioServerSocketChannel,可以理解为只有读机制,读的机制就是轮询有没有 ACCEPT 事件,有ACCEPT 事件,就创建一个 NioSocketChannel,NioServerSocketChannel 的主要作用其实就是创建一条与客户端连接的 channel,其他的可以不用管;
2. 截图二中的channelRead方法在客户端连接过来后被调用,它是在哪里注册的read事件的??
可以跟一下 NioServerSocketChannel() 的构造函数,构造的时候传递了一个 SelectionKey.OP_ACCEPT,然后再下面这个地方注册,具体注册可以在这个地方打个断点,然后通过调用链的方式追踪一下最开始调用的地方
3.这个地方是我写错了,应该是需要加到 childHandler 中,感谢指正!
012019-06-23
相似问题