服务端
所有的 Netty 服务器都需要以下两部分
- 至少有一个 ChannelHandler:该遵纪安实现了服务器对客户端接受的数据的处理逻辑,即业务逻辑
- 引导(ServerBootStrap):这是配置服务器的启动代码。它必须绑定到它要监听的服务器端口上面
ChannelHandler
一个ChannelHandler类中至少应该包含以下三个方法:
channelRead():对于每个传入的消息都要调用
channelReadComplete():表示读取到了当前批量中的最后一条消息
exceptionCaught():读取操作期间,出现异常后会被调用
具体方法和使用类与Netty版本有关系,本次示例代码采用的版本
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>5.0.0.Alpha1</version>
</dependency>
引导(ServerBootStrap)
具体需要做至少两件事:
- 绑定端口
- 配置 Channel ,以将有关的入站消息通知给 对应的 ChannelHandler 实例
客户端
所有的 Netty 客户端至少包括
- 至少有一个 ChannelHandler:该遵纪安实现了服务器对客户端接受的数据的处理逻辑,即业务逻辑
- 引导(BootStrap):这是配置服务器的启动代码。它必须绑定到它要监听的服务器端口上面
ChannelHandler
至少包含下面三个方法:
channelActive():连接建立后将会被调用
channelRead():读取数据
exceptionCaught():异常捕获
引导(BootStrap)
逻辑和服务端基本一致,主要区别点在于不需要绑定到一个一直被监听的端口,而是需要用主机的地址和端口参数来连接远程的地址。
总结
本章节搭建了一个简单的基于 Netty 的 CS 模式的架构,虽然只是一个简单的应用程序,但是它可以伸缩到支持数千个并发连接——每秒比普通的基于套接字的 java 应用程序处理多得多的消息。
下一章我们将对 Netty 体系架构进行概述,以为之后深入全面的学习 Netty 打好基础。
还没有评论,来说两句吧...