- 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();}}
- 运行一下:先启动NettyServer , 再启动NettyClient , 看下运行结果
============Netty服务器启动...=============Netty服务器监听端口:8888客户端发来的消息:大佬 , 带带我!
===========Netty客户端连接服务端=========服务端发来的消息:你好 , 靓仔!
好了 , 一个简单的Netty入门Demo就写完了 , Netty是一个双工通信的网络框架 , 可以看到 , 服务端和客户端 , 流程基本上一致 , 主要包括这么几个步骤:- 创建事件循环组和相关对象 , 用于监听和处理网络事件;
- 配置 Netty 服务器或客户端的启动参数 , 包括线程组、通道类型、TCP 参数等;
- 给服务器或客户端的 ChannelPipeline 添加各种 ChannelHandler , 用于处理不同的网络事件;
- 绑定端口启动服务器或连接服务器;
- 等待服务器或客户端连接关闭 , 释放相关资源 。
文章插图
服务器&客户端初始化启动流程
虽然这个Demo比较简单 , 但其实已经用到了Netty里几个比较关键的组件:
- ByteBuf:Netty 的字节容器 , 类似于 Java 的 ByteBuffer , 但是提供了更加强大、简便且安全的 API , 用于在网络中传递二进制数据;
- EventLoopGroup:Netty 的事件循环组 , 用于管理和调度连接到服务器或者从服务器连接出去的所有 Channel 上的事件循环;
- ServerBootstrap:Netty 的服务器启动类 , 用于启动和配置一个 TCP/IP 服务器;
- Bootstrap:Netty 的客户端启动类 , 用于启动和配置一个 TCP/IP 客户端;
- Channel:Netty 的核心概念 , 用于表示一个通信通道 , 可以读取和写入数据;
- ChannelPipeline:Netty 的 Channel 处理器 , 用于在传入的数据上执行一组 ChannelHandler;
- ChannelHandler:Netty 的核心组件 , 用于处理各种通信事件 , 例如读取数据、写数据、建立连接等;
文章插图
Netty的重要组件
后续 , 我们还会和这些组件打更多的交道 。
好了 , 那么这期内容就到这了 , 这期里我们初步了解了Netty , 包括什么是Netty、Netty现状、Netty的应用 , 还写了一个简单的Demo 。下一期 , 我们继续深入了解Netty , 敬请期待 。
参考:[1].https://netty.io/
[2].《Netty权威指南》
【玩转Netty,从“Hello World”开始!】[3]. 《Netty核心原理剖析与RPC实践》
推荐阅读
- 从不同维度分析:Linux与Windows的区别
- 刚从街道办事处辞职,我来告诉你们事业编的真实工资
- 林峰|张馨月晒全家福,与林峯带女儿打高尔夫,Luna从小被当名媛培养
- |突发!黄渤倪妮拍摄现场发生意外,8人从4楼高台跌落,主演未发声
- Angelababy|李嘉诚准儿媳梁洛施,直言与李泽楷分手后,感情更比从前
- 周冬雨|“三金影后”:从绯闻到洁身自好,只有一个成功脱险的周冬雨
- 做豆浆的黄豆要泡多久
- 求职|女生穿热裤上班是否得当?从职场穿着规范谈起
- 饵料|夏季野钓有妙招,自从学会这些招数,出钓没空军过
- 鲫鱼|野钓鲫鱼的最佳鱼饵配方,3+2的饵料组合就可以玩转野生鲫鱼