Netty服务如何接收新的数据

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);
    // 处理数据。。。
}
上一篇:JAVA nio 简单聊天室实现


下一篇:docker错误修改配置文件不能启动