# nettyx **Repository Path**: fbbzl/nettyx ## Basic Information - **Project Name**: nettyx - **Description**: 对netty4.1.x 进行了超轻量级封装, 提供了tcp客户端/服务端的基础模板, 串口通信的基础模板, 以及业内通用的工具扩展集, 并提供了丰富的函数式接口 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://nettyx-fbbzl-card.netlify.app/ - **GVP Project**: No ## Statistics - **Stars**: 20 - **Forks**: 8 - **Created**: 2021-12-22 - **Last Updated**: 2026-09-16 ## Categories & Tags **Categories**: web-dev-toolkits **Tags**: Netty ## README # Nettyx

Maven Central License JDK Netty

🚀 基于 Netty 的极简开发框架
轻量 · 高效 · 开箱即用 — 支持 TCP、串口、蓝牙

--- ## 🌟 特性 | | 特性 | 说明 | |---|------|------| | ⚡ | **超轻量** | Netty 4.2.x 超薄封装,零额外开销 | | 🔌 | **多协议** | TCP · 串口(Rxtx/Jsc) · 蓝牙 — 统一模板 API | | 🧩 | **结构体序列化** | 声明式二进制协议 — 注解标注 POJO,一步到位 | | 🔧 | **函数式优先** | 函数式处理器、拦截器、心跳 — 告别样板代码 | | 📡 | **蓝牙就绪** | 基于 OIO 的蓝牙服务端/客户端,嵌入式设备友好 | --- ## 📦 安装 ```xml io.github.fbbzl nettyx 2.6.31 ``` ```groovy implementation 'io.github.fbbzl:nettyx:2.6.29' ``` --- ## 🧭 快速开始 ### TCP 服务端 — 3 行代码 ```java ServerTemplate server = new ServerTemplate(8080) { @Override protected ChannelInitializer childChannelInitializer() { return ch -> ch.pipeline().addLast(new ChannelInboundHandlerAdapter() { @Override public void channelRead(ChannelHandlerContext ctx, Object msg) { ctx.writeAndFlush(Unpooled.wrappedBuffer("Hello\n".getBytes())); } }); } }; server.bind(); ``` ### 结构体序列化 — 声明式协议定义 ```java @Struct public class Login { @ToCharSequence(bufferLength = 32) String username; @ToArray(10) byte[] password; @Chunk(length = 8) byte[] reserved; } ``` ```java Login login = StructSerializer.toStruct(buf, Login.class); byte[] bytes = StructSerializer.toBytes(login); ``` ### 串口 — RXTX ```java SingleRxtxChannelTemplate serial = new SingleRxtxChannelTemplate("COM1") { @Override protected ChannelInitializer channelInitializer() { return ch -> ch.pipeline().addLast(new StringCodec()); } }; serial.connect(); serial.writeAndFlush("Hello"); ``` ### 蓝牙服务端 ```java BtServerTemplate btServer = new BtServerTemplate("0000110100001000800000805f9b34fb", "MyBtServer") { @Override protected ChannelInitializer childChannelInitializer() { return ch -> ch.pipeline().addLast(new ChannelInboundHandlerAdapter() { @Override public void channelActive(ChannelHandlerContext ctx) { System.out.println("蓝牙客户端已连接: " + ctx.channel().remoteAddress()); } }); } }; ``` --- ## 📚 模块说明 ``` action 功能接口 & 工具类 channel Channel 扩展 ├── bluetooth 蓝牙 OIO(客户端/服务端) ├── enhanced 优化的 OIO 字节流 └── serial Rxtx / Jsc 串口通道 codec 编解码器 ├── ByteArrayCodec 字节数组 ↔ ByteBuf ├── DelimiterBasedFrameCodec 基于分隔符的编解码 ├── EscapeCodec 转义 / 敏感词替换 ├── StartEndFlagFrameCodec 起始/结束标志编解码 ├── StringMessageCodec 字符串编解码 └── StructCodec 结构体编解码 event Netty 事件工具 exception 自定义运行时异常 handler 管道处理器 ├── ChannelInterceptor 读写拦截器 ├── ActionIdleStateHandler 可参数化空闲状态处理器 ├── ActionReadTimeoutHandler 可参数化读超时处理器 ├── ActionWriteTimeoutHandler 可参数化写超时处理器 ├── ChannelAdvice 入站/出站通知 ├── IdledHeartBeater 自动心跳 └── MessageFilter 消息过滤器 serializer 序列化 └── struct 二进制结构体序列化(注解驱动) template 应用模板 ├── serial/jsc Jsc 多/单通道客户端 ├── serial/rxtx Rxtx 多/单通道客户端 ├── tcp/client TCP 多/单通道客户端 + 服务探测 ├── tcp/server TCP 服务端 └── bluetooth/server 蓝牙服务端 util 工具类 ├── Bins 二进制位/数组工具 ├── BtFinder 蓝牙设备扫描 ├── CommPorts 串口工具 ├── EndianKit 大小端转换 ├── HexKit 十六进制编解码 └── ... ``` --- ## 🧪 构建 ```bash mvn clean install -DskipTests ``` > ℹ️ 部分测试依赖硬件(串口、蓝牙适配器),请按需运行。 --- ## 🔗 链接 | | | |---|------| | 🌐 | [GitHub](https://github.com/fbbzl/nettyx) | | 🇨🇳 | [Gitee](https://gitee.com/fbbzl/nettyx) | | 📖 | [使用案例](https://blog.csdn.net/fbbwht) | | 🛠️ | [JetBrains IDEA](https://www.jetbrains.com) — 授权赞助 | --- ## 🙏 鸣谢 > 首先谢谢家人,给了我充足的时间专注在此项目上;然后感谢 JetBrains 赠送的 Ultimate Edition 版 IDEA;最后谢谢自己。 > > 希望此框架能够为大家节省哪怕一分钟的开发时间。