玩转Netty,从“Hello World”开始!( 三 )

  • NettyClientHandler:Netty客户端处理器 , 用于处各种事件
 /** * <p>Date: 2023/5/14 10:33</p> * <p>Author: fighter3</p> * <p>Description: Netty客户端处理器</p> */public class NettyClientHandler extends ChannelInboundHandlerAdapter {/*** 当 Channel 准备就绪时就会触发这个方法*/@Overridepublic void channelActive(ChannelHandlerContext ctx) throws Exception {String message="大佬 , 带带我!";ByteBuf hello = Unpooled.copiedBuffer(message, CharsetUtil.UTF_8);// 发送消息ctx.writeAndFlush(hello);}/*** 当 Channel 中有来自服务器的数据时就会触发这个方法*/@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {ByteBuf buf = (ByteBuf) msg;System.out.println("服务端发来的消息:" + buf.toString(CharsetUtil.UTF_8)); // 接收消息并打印输出}/*** 发生异常就会触发这个方法*/@Overridepublic void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {cause.printStackTrace();ctx.close();}}
  1. 运行一下:先启动NettyServer , 再启动NettyClient , 看下运行结果
============Netty服务器启动...=============Netty服务器监听端口:8888客户端发来的消息:大佬 , 带带我! ===========Netty客户端连接服务端=========服务端发来的消息:你好 , 靓仔!好了 , 一个简单的Netty入门Demo就写完了 , Netty是一个双工通信的网络框架 , 可以看到 , 服务端和客户端 , 流程基本上一致 , 主要包括这么几个步骤:
  1. 创建事件循环组和相关对象 , 用于监听和处理网络事件;
  2. 配置 Netty 服务器或客户端的启动参数 , 包括线程组、通道类型、TCP 参数等;
  3. 给服务器或客户端的 ChannelPipeline 添加各种 ChannelHandler , 用于处理不同的网络事件;
  4. 绑定端口启动服务器或连接服务器;
  5. 等待服务器或客户端连接关闭 , 释放相关资源 。

玩转Netty,从“Hello World”开始!

文章插图
服务器&客户端初始化启动流程
虽然这个Demo比较简单 , 但其实已经用到了Netty里几个比较关键的组件:
  1. ByteBuf:Netty 的字节容器 , 类似于 Java 的 ByteBuffer , 但是提供了更加强大、简便且安全的 API , 用于在网络中传递二进制数据;
  2. EventLoopGroup:Netty 的事件循环组 , 用于管理和调度连接到服务器或者从服务器连接出去的所有 Channel 上的事件循环;
  3. ServerBootstrap:Netty 的服务器启动类 , 用于启动和配置一个 TCP/IP 服务器;
  4. Bootstrap:Netty 的客户端启动类 , 用于启动和配置一个 TCP/IP 客户端;
  5. Channel:Netty 的核心概念 , 用于表示一个通信通道 , 可以读取和写入数据;
  6. ChannelPipeline:Netty 的 Channel 处理器 , 用于在传入的数据上执行一组 ChannelHandler;
  7. ChannelHandler:Netty 的核心组件 , 用于处理各种通信事件 , 例如读取数据、写数据、建立连接等;

玩转Netty,从“Hello World”开始!

文章插图
Netty的重要组件
后续 , 我们还会和这些组件打更多的交道 。
好了 , 那么这期内容就到这了 , 这期里我们初步了解了Netty , 包括什么是Netty、Netty现状、Netty的应用 , 还写了一个简单的Demo 。下一期 , 我们继续深入了解Netty , 敬请期待 。
 
参考:[1].https://netty.io/
[2].《Netty权威指南》
【玩转Netty,从“Hello World”开始!】[3]. 《Netty核心原理剖析与RPC实践》




推荐阅读