Netty服务如何接收新的数据
我们一起学习了服务接收新连接过程的源码剖析,发现一个很有趣的现象,其实,Netty 底层还是使用的 Java 原生的 NIO 来操作的.
那么,接收新数据也是一样吗?如果是,那么数据如何转化成 Netty 的 ByteBuf 呢?
我们知道,Java 原生 NIO 从 SocketChannel 中取出来的数据是存储在 ByteBuffer 里面的,也就是下面这样的代码:
if (selectionKey.isReadable()) {
// 强制转换为SocketChannel
SocketChannel socketChannel = (SocketChannel) selectionKey.channel();
// 创建Buffer用于读取数据
ByteBuffer buffer = ByteBuffer.allocate(1024);
// 将数据读入到buffer中(第二阶段阻塞)
int length = socketChannel.read(buffer);
// 处理数据。。。
}