标签:Netty 服务 buffer ByteBuffer 接收 数据 SocketChannel
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);
// 处理数据。。。
}
标签:Netty,服务,buffer,ByteBuffer,接收,数据,SocketChannel 来源: https://blog.csdn.net/dgutliangxuan/article/details/119249207
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。