12 2020 档案
摘要:客户端像服务端发送消息,服务端不知道客户端每次发送消息的数据大小,服务端可能出现把一个数据包拆成两个数据包进行读取这种被称为拆包,也有可能把两个数据包当成一个数据包读取这种被称为粘包 如下图所示,客户端像服务端发送了两个数据包dataA和dataB,但服务端实际收到可能有四种情况 一次性读到data
阅读全文
摘要:既然是网络通信那么心跳检测肯定是离不开的,netty心跳检测分为读、写、全局 bootstrap.childHandler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketCha
阅读全文
摘要:我们在讲解服务端和客户端时经常会看到提交一个任务到channel对应的EventLoop上,后续的io事件监听和任务执行都在EventLoop完成,可以说EventLoop是netty最核心的组件,我们接下来一一分析 剥开这层神秘的面纱 提交一个连接任务异步执行 channel.eventLoop(
阅读全文
摘要:服务端启动流程 我们回顾前面讲解的netty启动流程,服务端这边有两个EventLoopGroup,一个专门用来处理连接,一个用来处理后续的io事件 服务端启动还是跟nio一样,绑定端口进行监听,我们先来看绑定流程 // 绑定端口并同步阻塞直到绑定结束 ChannelFuture cf = serv
阅读全文
摘要:channel介绍: netty中channel分为NioServerScoketChannel和NioSocketChannel,分别对应java nio中的ServerScoketChannel和SocketChannel channel、pipeline、context、handler关系 S
阅读全文
摘要:这节我们着重介绍netty最为核心的组件EventLoopGroup和EventLoop EventLoopGroup:顾名思义就是EventLoop的组,下面来看它们的继承结构 在netty中我们可以把EventLoop看做一个线程,当然线程不单是jdk中的的线程,它们都从Executor一路继承
阅读全文
摘要:本文通过对netty服务端、客户端的启动流程分析, 让大家对netty是如何启动运行的。 废话不多说,上源码!!! 建议读者学习netty下的jar类型为 netty-example,里面有很多example可以供我们参考学习,本系列文章netty的版本为4.1.25.Final,5.X版本有重大b
阅读全文
摘要:前言:netty作为高性能网络框架我们再熟悉不过,底层基于jdk的NIO进行深入的封装,市面上几乎所有需要进行网络通信的框架都离不开它,如dubbo、spring cloud等。 netty之所以被广泛使用,一是它的高性能,完善jdk中NIO的性能瓶颈,二是它是一个网络框架,内部进行完善的封装,有非
阅读全文