tcp协议栈开发
- JDK1.8
- Netty-4.1.42.Final
- protobuf-java 3.9
消息头
| 名称 |
长度 |
数据 |
说明 |
| magic |
4 |
0x0CAFFEE0 |
唯一通信标志 |
| length |
4 |
0x16+body.length |
消息总长度 |
| moduleId |
4 |
- |
功能大模块 |
| cmdId |
4 |
- |
具体功能 |
| body |
body.length |
- |
消息体 |
注解说明
| 名称 |
说明 |
| ScanMapping |
控制器的包路径 |
| ReqMapping |
标记协议号的分发 |
| AutoIn |
对象自动注入 |
| MapperScan |
扫描mapper层,标记为操作db的对象 |
| ServiceImpl |
标记需要service服务实现的interface对象 |
模块说明
项目中的公共模块
1. 协议栈的消息id编号
2. 消息对象
3. protoBuffer生成的对象
生成xml配置的协议消息
可打出jar包单独拎出来执行
resources的msg-id为协议消息目录,可以直接执行jar文件
1. DbConnectionPool
2. netty的handler
3. 监听器
4. 协议消息注册中心
5. 消息分发处理
一个放proto文件的文件夹
proto文件编译可执行的java对象
具体的功能实现模块
1. guava缓存
2. 控制器controller的实现
3. 监听器的实现
4. service服务对象实现
5. mapper操作DB
一些文件
1. 导入该目录的sql
服务启动
1. 修改 \server-system\src\main\resources\db_server.properties 中的db连接配置
2. 通过MAIN方法启动 com.github.chenmingq.server.all.ServerStart
@ScanMapping(name = "com.github.chenmingq.server.system.controller")
public class ServerStart {
public static void main(String[] args) {
Server.startServer(ServerStart.class, args);
}
}
通过MAIN方法启动 com.github.chenmmingq.client.test.ClientStart
// com.github.chenmmingq.client.test.ClientAll
// 具体实现客户端创建的请求功能
打包服务
cd socket-test
mvn clean package
启动服务
cd socket-test/server-all/target
java -jar server-all-1.0-SNAPSHOT-jar-with-dependencies.jar
demo
- 实现了客户端登陆测试
- 实现了客户端用户注册测试
服务端功能
- 存储二进制数据
- guava缓存
- session管理
- 监听器
- protobuf序列化数据传输
- 集成mybatis
- Executor线程实现
- 服务端心跳服务
- 通过注解实现TCP协议栈消息
该项目主要是用来自己学习使用,请多多指教