Java 通信框架 / TCP / 串口 / 蓝牙 / Struct

Nettyx

基于 Netty 的超轻量通信框架,把 TCP、串口、蓝牙通信里的通道模板、编解码、心跳、拦截器、结构体序列化和常用工具收束成更容易落地的 API。

Maven Central JDK 21+ Netty 4.2.x Apache 2.0
TCP服务端/客户端模板
SerialRxtx/Jsc 串口通信
Struct二进制协议序列化
Handler心跳、拦截器、日志
<dependency>
  <groupId>io.github.fbbzl</groupId>
  <artifactId>nettyx</artifactId>
  <version>2.6.23</version>
</dependency>

定位

设备接入

适合物联网设备、网关、采集器、工控设备、仪表、扫码枪等需要 TCP 或串口通信的项目。

私有协议

适合固定字段长度、保留位、数组字段、字符串字段、大小端转换等二进制协议处理。

Netty 工程化

保留 Netty 的灵活性,同时减少启动模板、Pipeline 样板代码和通用连接治理逻辑。

核心能力

超轻量封装

在 Netty 基础上提供薄封装和模板,不强迫业务切换到复杂框架模型。

多通信协议

覆盖 TCP、串口 Rxtx/Jsc、蓝牙等常见设备通信场景。

模板化启动

提供单通道、多通道、服务端、客户端等基础模板,减少重复启动代码。

编解码支持

内置字节数组、字符串、分隔符、首尾标识、转义、结构体等编解码能力。

结构体序列化

通过注解描述二进制协议字段,降低手写 byte array 解析成本。

函数式扩展

提供函数式接口、拦截器、心跳、超时处理、消息过滤等扩展点。

使用示例

TCP 服务端

少量代码启动服务

适合设备接入服务、协议验证服务,以及需要继续扩展 Pipeline 的 TCP 场景。

  • 绑定端口
  • 追加业务 Handler
  • 收到消息后立即响应
TCP Server
ServerTemplate server = new ServerTemplate(8080) {
    @Override
    protected ChannelInitializer<NioSocketChannel> childChannelInitializer() {
        return ch -> ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {
            @Override
            public void channelRead(ChannelHandlerContext ctx, Object msg) {
                byte[] body = "Hello\n".getBytes(StandardCharsets.UTF_8);
                ctx.writeAndFlush(Unpooled.wrappedBuffer(body));
            }
        });
    }
};

server.bind();

作者实践文章

连接治理

Netty 心跳

补充业务心跳,避免只依赖 TCP keepalive。

协议处理

Netty 消息转义

处理分隔符协议、控制字符、敏感字节转义与还原。

安全通信

Netty OpenSsl

为不可信网络通信链路增加 SSL/TLS 安全层。

推荐阅读路径

集成

先读 Spring Boot Starter 和 TCP 通用模板,建立项目集成方式和通信骨架。

治理

再读心跳、断线重连、ChannelAdvice、IO 事件和日志,补齐长连接治理能力。

协议

接着读消息转义、握手拦截器和 Struct 序列化,处理真实设备协议。

场景

最后按需要补充串口通信、OpenSSL 和 jvisualVM 监控。