Netty学习
Netty详细学习
魔舞清华-方
这个作者很懒,什么都没留下…
展开
-
netty学习笔记14 - TCP粘包和拆包
TCP粘包与拆包基本介绍 TCP是面向连接的,面向流的,提供高可靠 性服务。收发两端 (客户端 和服务端)都要有一一对比的socket,因此,发送端为了就多个发给服务端的包,更有效的发给对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合成 一个大的数据块,然后进行封包。这样做虽然高效,但接收端就难与分辨出完整的数据包了,因为面向流的通信是无消息保护边界的 由于TCP无消息...原创 2020-02-21 14:53:52 · 171 阅读 · 0 评论 -
netty学习笔记13 - Protobuf 和 Netty的编码与解码
编码与解码 基本介绍 编写网络应用数据时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码。 codec(编解码器)的组成部分有两个:decoder(解码器),encoder(编码器)。encoder负责把业务数据转成字节码数据,decoder负责把字节码数据转成业务数据。 netty本身编码与解码的机制和问题分析 Netty 自身提供了一些 cod...原创 2020-02-21 11:24:38 · 509 阅读 · 0 评论 -
netty学习笔记12 - Netty实现服务器和客户端的长连接
实例要求 Http协议是无状态的, 浏览器和服务器间的请求响应一次,下一次会重新创建连接. 要求:实现基于webSocket的长连接的全双工的交互改变Http协议多次请求的约束,实现长连接了, 服务器可以发送消息给浏览器 客户端浏览器和服务器端会相互感知,比如服务器关闭了,浏览器会感知,同样浏览器关闭了,服务器会感知 Netty 把HTTP改成WebSocket长连接主要是依靠We...原创 2020-02-18 13:36:00 · 922 阅读 · 0 评论 -
netty学习笔记11 - Netty心跳检测机制
111原创 2020-02-18 13:23:46 · 271 阅读 · 0 评论 -
netty学习笔记10 - Netty应用实例群聊系统
实例要求: 编写一个 Netty 群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞) 实现多人群聊 服务器端:可以监测用户上线,离线,并实现消息转发功能 客户端:通过channel 可以无阻塞发送消息给其它所有用户,同时可以接受其它用户发送的消息(有服务器转发得到) 目的:进一步理解Netty非阻塞网络编程机制 代码如下: 服务器 public class GroupChatServe...原创 2020-02-18 11:10:48 · 178 阅读 · 0 评论 -
netty学习笔记09 - Netty的核心模块组件
Bootstrap、ServerBootstrap 作用 Bootstrap 意思是引导,一个Netty程序通常由一个Bootstrap开始,主要作用是配置整个Netty程序,串联各个组件,Netty中的Bootstrap类是客户端的启动程序引导类,ServerBootstrap是服务端启动引导类 常用方法 public ServerBootstrap group(EventLoopGrou...原创 2020-02-18 10:04:17 · 150 阅读 · 0 评论 -
netty学习笔记08 -Netty的Http服务
实例要求 实例要求:使用IDEA 创建Netty项目 Netty 服务器在 6668 端口监听,浏览器发出请求 "http://localhost:6668/ " 服务器可以回复消息给客户端 "Hello! 我是服务器 5 " , 并对特定请求资源进行过滤. 目的:Netty 可以做Http服务开发,并且理解Handler实例和客户端及其请求的关系. 服务器: public class ...原创 2020-02-17 12:01:16 · 134 阅读 · 0 评论 -
netty学习笔记07 - 异步模型
基本介绍 异步的概念和同步相对。当一个异步调用发生后,调用者不能立刻得到结果。实际处理这个调用的组件在完成后,通过状态,通知和回调来通知调用者。 Netty中I/O操作是异步的,包括Bind,Write,Connect等操作会简单的返回一个ChannelFuture 调用者不能立刻获得结果,而是 通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作 结果。 ...原创 2020-02-16 22:00:14 · 89 阅读 · 0 评论 -
netty学习笔记06 - netty模型
netty模型 Netty 主要基于主从 Reactors 多线程模型(如图)做了一定的改进,其中主从 Reactor 多线程模型有多个 Reactor 工作示意图 netty工作示意图说明 Netty抽象出两个线程池BossGruop专门负责接收客户端连接 ,WorkGroup专门负责网络的读写 BossGroup和WorkGroup类型都是NioEventLoopGroup NioEv...原创 2020-02-16 11:07:50 · 113 阅读 · 0 评论 -
netty学习笔记05 - 线程模型
线程模型基本介绍 不同的线程模式,对程序的性能有很大影响,为了搞清Netty 线程模式,我们来系统的讲解下 各个线程模式, 最后看看Netty 线程模型有什么优越性. 目前存在的线程模型有:传统阻塞 I/O 服务模型 Reactor 模式 根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现 单 Reactor 单线程; 单 Reactor 多线程; 主从 R...原创 2020-02-14 21:19:27 · 158 阅读 · 0 评论 -
netty学习笔记04 - NIO与零拷贝
零拷贝基本介绍 零拷贝是网络编程的关键,很多性能优化都离不开。 在 Java 程序中,常用的零拷贝有 mmap(内存映射) 和 sendFile。那么,他们在 OS 里,到底是怎么样的一个的设计?我们分析 mmap 和 sendFile 这两个零拷贝 另外我们看下NIO 中如何使用零拷贝 传统 IO数据的读写 java传统IO和网络编程的一段代码 File file = n...原创 2020-02-14 13:14:33 · 154 阅读 · 0 评论 -
netty学习笔记03 - NIO编程实例群聊系统
实例要求 编写一个 NIO 群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞) 实现多人群聊 服务器端:可以监测用户上线,离线,并实现消息转发功能 客户端:通过channel 可以无阻塞发送消息给其它所有用户,同时可以接受其它用户发送的消息(有服务器转发得到) 目的:进一步理解NIO非阻塞网络编程机制 代码如下 详细解释看 注释 服务器端: public class GroupCh...原创 2020-02-14 11:56:56 · 140 阅读 · 0 评论 -
netty学习笔记02 - java NIO详解
java NIO基本介绍 Java NIO 全称 java non-blocking IO,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 New IO),是同步非阻塞的 NIO 相关类都被放在 java.nio 包及子包下,并且对原 java.io 包中的很多类进行改写。 NIO 有三大核心部分:Chann...原创 2020-02-13 22:05:02 · 194 阅读 · 0 评论 -
netty学习笔记01- java IO模型之BIO
java I/O模型的基本说明 I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能 Java共支持3种网络编程模型/IO模式:BIO、NIO、AIO Java BIO : 同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销 【简单示意图】 Ja...原创 2020-02-12 15:17:17 · 199 阅读 · 0 评论