
netty
文章平均质量分 95
Ewen Seong
trouble and chance comes together
展开
-
IO系列-3 NIO基本概念:Buffer和Channel和Selector
以下通过建立一个TCP服务端的案例演示NIO的使用方式,案例包含了缓冲区、通道、选择器的使用方式。try {// 调用选择器的select()方法阻塞等待(当有IO事件到达时,从阻塞中唤醒)// 获取所有已就绪事件// 遍历事件// 处理连接事件// 处理可读事件// 移除已处理事件,防止死循环。原创 2024-10-07 16:00:37 · 1217 阅读 · 0 评论 -
Netty系列-8 Netty处理粘包和半包问题
TCP协议是基于字节流的数据通讯协议,数据被看做是一连串的字节流;不具备边界信息,给接收方带来半包和粘包问题。半包:TCP传输时,将数据切割成一个个数据包进行传输。接收方一次读取操作,如果没有接受完完整的数据包而只能读取部分数据时,出现半包问题。粘包:发送方发送的两个或者多个数据包在接受方接受时被合并成了一个数据包。半包和粘包问题可以通过业务层解决。原创 2024-10-04 12:09:20 · 873 阅读 · 0 评论 -
Netty系列-7 Netty编解码器
netty框架中,自定义解码器的起点是ByteBuf类型的消息, 自定义编码器的终点是ByteBuf类型。原创 2024-10-02 13:57:39 · 876 阅读 · 0 评论 -
Netty系列-6 Netty消息处理流程
前文介绍了Netty服务端的启动流程,服务端启动后可以处理客户端发送的请求,包括连接请求和普通消息。当客户端有连接请求到达时,服务器会创建通道并将通道注册到选择器上,处理逻辑与NIO中实现完全一致。详细流程如下所示:本章节将分小节对上图进行详细介绍。在Netty系列-5 Netty启动流程中介绍过,当Netty服务端启动时,将NioServerSocketChannel作为attachment:将this(NioServerSocketChannel对象)作为attachment传递给registe原创 2024-09-30 23:50:57 · 1047 阅读 · 0 评论 -
Netty系列-5 Netty启动流程
将负责处理连接的和负责业务处理的NioEventLoopGroup线程池对象、通道类型、处理器Handler、子处理器Handler、连接配置等保存至ServerBootstrap对象,然后调用ServerBootstrap对象的bind方法启动Netty程序。可以将ServerBootstrap和Bootstrap理解为启动引导器,将信息告知引导器,然后由引导器负责执行后续的启动流程。因此在介绍启动流程前,有必要简单了解一下ServerBootstrap和Bootstrap。原创 2024-09-28 23:18:08 · 1230 阅读 · 0 评论 -
Netty系列-4 Pipeline和Handler
Netty将IO事件按照流向划分为两个部分,对应Inbound入站事件和Outbound出站事件:入站事件由外部触发,包括通道注册(register)、通道激活(active)、数据可读(read)、通道异常(exceptionCaught)等;出站事件由程序主动触发,如连接的建立(bind, connect)与关闭(closh),数据的写出(write、flush)等。先整体上看, Netty的每个通道都独有一个Pipeline,通道的出站和入站事件在Pipeline中流动和处理,如下所示:上图包含了原创 2024-09-22 17:59:13 · 1119 阅读 · 0 评论 -
Netty系列-3 ChannelFuture和ChannelPromise介绍
Netty源码中大量使用了Future和Promise,学习ChannelFuture和ChannelFuture有助于理解Netty的设计思路。本文的重点内容在于梳理清楚这些类的关系以及结合源码实现介绍这些类的作用,其中核心逻辑在于DefaultPromise和DefaultChannelPromise原创 2024-09-07 13:41:28 · 1341 阅读 · 0 评论 -
Netty系列-2 NioServerSocketChannel和NioSocketChannel介绍
本文介绍Netty的通道组件NioServerSocketChannel和NioSocketChannel,从源码的角度介绍其实现原理。原创 2024-09-01 15:04:22 · 1294 阅读 · 0 评论 -
Netty系列-1 NioEventLoopGroup和NioEventLoop介绍
本文从源码的角度介绍NioEventLoopGroup和NioEventLoop,包含NioEventLoopGroup和NioEventLoop内部的组件。原创 2024-08-25 18:26:06 · 1630 阅读 · 0 评论