基于netty的tcp通信demo

本文介绍了使用JDK17和Spring-Boot3.2.3构建的TCP服务,采用Netty多线程和protobuf协议进行数据传输。文章详细描述了项目配置、业务流程、心跳机制、时间差校准和测试数据发送,同时提供数据分析方法和项目源码链接。
摘要由CSDN通过智能技术生成

项目环境

  • JDK 17
  • spring-boot 3.2.3
  • netty
  • 多线程

项目说明

  • 测试数据使用protobuf编码压缩
  • 使用netty启动tcp服务端并使用PB协议

配置说明

  • 重要 下载好项目后配置jdk17环境
  • 重要 配置后先执行clean,然后执行maven Plugins中的 protoc-jar:run生成pb文件
  • 重要 配置src/main/generated-sources目录为Generated Sources Root

业务文档

本项目用于测试TCP客户端与服务端通信的效率,主要包含以下功能:

  • 客户端上线事件: 客户端上线后向tcp 服务端发送一个上线事件
  • 心跳事件: 客户端每隔5秒向tcp 服务端发送一个心跳ping事件,服务端收到后给客户端回一个心跳pong事件,服务端根据ping事件续期客户端的存活状态
  • 时间差校准: 服务端每秒向tcp 客户端发送一个时间校准消息,客户端收到后给服务端回一个客户端时间,服务端根据传输时间及客户端与服务端的时间戳来估算客户端与服务端的时间差
  • 测试数据发送:服务端在客户端上线后,开始按照配置向客户端发送测试数据,直至测试结束或客户端下线
  • 测试数据结果处理:客户端收到服务端发送的测试数据后,向服务端反馈接收时间,服务端根据客户端返回的时间和发送时间以及时间差信息计算出测试数据的传输时间

业务流程技术说明

系统启动后在使用TcpServerBootstrap.java
启动netty tcp 服务

  • 系统启动后运行定时任务,发送校准消息ClientTimeDiffCalculator#sendTimeDiffMessage,发送心跳消息ClientHeartBeatCalculator#sendTimeDiff
  • 系统启动后运行定时任务,发送测试数据TestDataTransService#run,执行发送测试数据的逻辑
    • 定时任务每3秒运行一次,监控到有客户端上线,则创建一个独立的发送数据线程向客户端发送数据。
    • 发送数据的大小、发送的次数、发送频率 根据配置文件application.yml中的配置决定

数据分析说明

测试结果数据会写入到文件/tmp/applog/TestDataTrans.log,配置详情见logback-spring.xml

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值