Netty编写第一个服务端与客户端应用程序

小咪咪 2022-05-24 03:25 258阅读 0赞

服务端

  1. 所有的 Netty 服务器都需要以下两部分
  • 至少有一个 ChannelHandler:该遵纪安实现了服务器对客户端接受的数据的处理逻辑,即业务逻辑
  • 引导(ServerBootStrap):这是配置服务器的启动代码。它必须绑定到它要监听的服务器端口上面

ChannelHandler

  1. 一个ChannelHandler类中至少应该包含以下三个方法:
  2. channelRead():对于每个传入的消息都要调用
  3. channelReadComplete():表示读取到了当前批量中的最后一条消息
  4. exceptionCaught():读取操作期间,出现异常后会被调用
  5. 具体方法和使用类与Netty版本有关系,本次示例代码采用的版本
  6. <dependency>
  7. <groupId>io.netty</groupId>
  8. <artifactId>netty-all</artifactId>
  9. <version>5.0.0.Alpha1</version>
  10. </dependency>

引导(ServerBootStrap)

  1. 具体需要做至少两件事:
  • 绑定端口
  • 配置 Channel ,以将有关的入站消息通知给 对应的 ChannelHandler 实例

客户端

  1. 所有的 Netty 客户端至少包括
  • 至少有一个 ChannelHandler:该遵纪安实现了服务器对客户端接受的数据的处理逻辑,即业务逻辑
  • 引导(BootStrap):这是配置服务器的启动代码。它必须绑定到它要监听的服务器端口上面

ChannelHandler

  1. 至少包含下面三个方法:
  2. channelActive():连接建立后将会被调用
  3. channelRead():读取数据
  4. exceptionCaught():异常捕获

引导(BootStrap)

  1. 逻辑和服务端基本一致,主要区别点在于不需要绑定到一个一直被监听的端口,而是需要用主机的地址和端口参数来连接远程的地址。

总结

  1. 本章节搭建了一个简单的基于 Netty CS 模式的架构,虽然只是一个简单的应用程序,但是它可以伸缩到支持数千个并发连接——每秒比普通的基于套接字的 java 应用程序处理多得多的消息。
  2. 下一章我们将对 Netty 体系架构进行概述,以为之后深入全面的学习 Netty 打好基础。

发表评论

表情:
评论列表 (有 0 条评论,258人围观)

还没有评论,来说两句吧...

相关阅读