基于netty实现的自定义协议通讯协议
- 通讯协议定义
字段 | 占用的字节数 | 描述 |
---|---|---|
帧 头 | 2 bytes | 固定为 0x55 0xAA |
长 度 | 2 bytes | 长度 = 命令字 + 参数 + 校验和 ,不包括帧头和长度字节 |
命 令 | 1 bytes | 0 心跳, 1 认证, 2 获取信息 |
参 数 | 0~65535 bytes | 业务数据 |
校验和 | 2 bytes | 校验和 = 帧头 + 长度 + 命令字 + 参数的字节累加和 |
框架功能
- 心跳机制
- TCP半包,黏包处理
- IP过滤
- 日志打印
- 自定义协议解析
业务描述
(1)Netty 协议栈客户端发送握手请求消息,携带认证信息;
(2)Netty 协议栈服务端对握手请求消息进行合法性校验,校验通过后,返回登录成功的握手应答消息;
(3)链路建立成功之后,客户端发送心跳消息, 客户端发送业务消息;
(6)服务端响应心跳和业务消息;
(7)服务端退出时,服务端关闭连接,客户端感知对方关闭连接后,被动关闭客户端连接。
完整代码下载地址
代码截图
客户端启动代码
1 | java复制代码package com.king.netty.core.client; |
客户端请求认证Handler代码
1 | java复制代码package com.king.netty.core.client; |
客户端心跳Handler代码
1 | java复制代码package com.king.netty.core.client; |
客户端业务Handler代码
1 | java复制代码package com.king.netty.core.client; |
服务器启动代码
1 | java复制代码package com.king.netty.core.server; |
服务器认证处理Handler
1 | java复制代码package com.king.netty.core.server; |
服务器心跳处理Handler
1 | java复制代码package com.king.netty.core.server; |
服务器业务处理Handler
1 | java复制代码package com.king.netty.core.server; |
协议定义代码
1 | java复制代码package com.king.netty.core; |
协议解码器
1 | java复制代码package com.king.netty.core; |
协议编码器
1 | java复制代码package com.king.netty.core; |
本文转载自: 掘金