上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.5 Netty
本书使用Netty统一的IO[1]读写API以及强大的Pipeline来编写业务处理逻辑,在后续章节中,会通过即时聊天系统这个例子,带大家逐步了解Netty以下核心知识点。
● 如何启动服务端?
● 如何启动客户端?
● 数据载体ByteBuf。
● 如何设计长连自定义协议?
● 拆包/粘包原理与实践。
● 如何实现自定义编解码?
● 如何使用Pipeline与ChannelHandler?
● 如何定时发心跳数据包?
● 如何进行连接空闲检测?
1.5.1 客户端使用Netty的程序逻辑结构
下图展示了客户端使用Netty的程序逻辑结构。
1.客户端会解析控制台指令,比如发送消息或者建立群聊等指令。
2.客户端会基于控制台的输入创建一个指令对象,用户告诉服务端具体要干什么事情。
3.TCP通信需要的数据格式为二进制,因此,接下来通过自定义二进制协议将指令对象封装成二进制,这一步被称为协议的编码。
4.对于收到服务端的数据,首先需要截取出一段完整的二进制数据包(拆包/粘包相关的内容后续小节会讲解)。
5.将此二进制数据包解析成指令对象,比如收到消息。
6.将指令对象送到对应的逻辑处理器来处理。
1.5.2 服务端使用Netty的程序逻辑结构
服务端使用Netty的程序逻辑结构与客户端非常类似,如下图所示,这里不再赘述。