文章分类 - Netty
摘要:五Netty源码分析--4Bootstrap.connect client端与server端bootstrap配置和启动流程大致相同,server端需要bind端口并监听,来对外提供连接服务;而client端,执行b.connect连接server端。 4.1 Bootstrap.connect()
阅读全文
摘要:五Netty源码分析--3Bootstrap.bind--下 TAG1.3.1.1.3 register0 AbstractChannel private void register0(ChannelPromise promise) { try { // 检查channel是否是open状态(因为在
阅读全文
摘要:五Netty源码分析--3Bootstrap.bind--中 TAG1.2.2 ServerBootstrapAcceptor(连接处理器--server接受client端连接--子channel创建) 该处过程是为serversocketchannel.pipeline添加一个初始化的handle
阅读全文
摘要:五Netty源码分析--3Bootstrap.bind--上 第三节 ServerBootstrap.bind()源码解析 3.1 ServerBootstrap配置方法 首先从ServerBootstrap的配置方法跟入,看如何实现 TAG0.1 parent属性设置 group传入,分别设置pa
阅读全文
摘要:五Netty源码分析--2ServerBootstrap分析 第二节 ServerBootstrap分析 使用NIO原生类库开发异步服务器时,需要使用多路复用器selector、serverSocketChannel、SocketChannel、selectionKey等,相比于传统BIO开发,NI
阅读全文
摘要:五Netty源码分析--1NioEventLoopGroup初始化分析 以NettyRPC项目为例,源码分析: public void run() { //netty的reactor线程组 EventLoopGroup bossGroup = new NioEventLoopGroup(); Eve
阅读全文
摘要:四Netty组件类--7EventLoop和EventLoopGroup 18.2 NioEventLoopGroup 体系结构图如下: NioEventLoopGroup也是Executor,且是线程池的Executor,它的execute()方法在父类AbstractEventExecutorG
阅读全文
摘要:四Netty组件类--6Netty的线程模型 18.1 Netty的线程模型 18.1.0 Netty中IO线程的工作流程 IO线程处理的关键点: 每一IO线程在执行上述操作时是串行执行的,即注册在一个 Selector(事件选择器)中的所有通道,**同一时间只有一个通道的事件被处理。**这也是为什
阅读全文
摘要:四Netty组件类--5ChannelHandlerContext 17.5 ChannelHandlerContext 17.5.1 ChannelHandlerMask 对事件的inbound和outbound定义 final class ChannelHandlerMask { private
阅读全文
摘要:四Netty组件类--4ChannelHandler 17.3 ChannelHandler功能说明 17.3.1 ChannelHandler接口功能 1 channelHandler: channelHandler实际为inbound和outbound的拦截器(拦截过滤器原理) handlerA
阅读全文
摘要:四Netty组件类--3ChannelPipeline 17.1 ChannelPipeline功能说明 channePipeline是容器,可以动态编排职责链(职责链中node节点是ChannelHandler包装成的ChannelContextHandler),职责链可以有选择的监听、处理自己关
阅读全文
摘要:四Netty组件类--2Selector多路选择器 16.4 Selector源码与机制 选择器selector是NIO的关键,是实现多路复用的核心类。Nio是由事件驱动的,selectableChannel.register方法,将当前channel注册到指定selector上,通过询问操作系统,
阅读全文
摘要:四Netty组件类--1Channel通道 16.1 Channel功能说明 Netty中channel是socket连接的抽象,为用户提供关于底层socket状态(连接还是断开),以及对socket的读写等操作。 父子channel: channel有父子channel的概念。server端负责链
阅读全文
摘要:三Netty--Netty入门应用 Netty的开发过程,需要注意对比和NIO开发流程的对应关系。 仍旧以TimeServer为例,简单介绍Netty开发流程。 3.2 Server端开发 3.2.1 TimeServer代码 public class TimeServer { //server端b
阅读全文
摘要:二Netty--NIO入门 第二章 NIO入门 网络编程基本模型: server和client模型,两个进程相互通信。server端提供位置(ip+port),client端通过connect向服务端监听的地址(ip+port)发起连接请求。通过三次握手,建立连接,然后通过socket进行通信。
阅读全文
摘要:一Netty框架--Java的I/O演进 第一章 Java的I/O演进之路 1.1 I/O基础入门 Java1.4早期版本,对io支持不完善,存在如下问题: **buffer:**没有数据缓冲区,io性能存在问题 **channel:**没有channel概念,只有输入InputStream和输出流
阅读全文