Violetttte 2023-03-20 16:00 采纳率: 82.8%
浏览 33

Netty使用ProtoBuf如何实现分片传输

如题,目前有一个任务是使用Netty,并以ProtoBuf作为传输协议,分片传输文件,每片文件500K,我比较头晕的是,关于TCP的粘包问题,通过添加编码解码器可以解决,但是添加的编码解码器都是ProtoBuf自带的,已经写好了的编码和解码器,如果想要实现分片传输,我是不是需要重新修改一下ProtoBuf自带的编码器呢?下图是添加的编码和解码器。

img

下图则是ProtoBufEncoder的代码,看了下这个类是只读不能修改的。

img

关于分片传输,我先开始有一个想法是在客户端,对每一个文件在写入ctx之前,判断一下这个文件的字节数组要分片传输多少次,然后针对文件传输的.Proto文件我设置3个属性,分别是bytes(存储字节流)、string(记录文件名)、int(记录要分片传输多少次),然后通过记录的int要传输多少次,在Encoder编码文件中对其进行判断和拼接,但是目前来看的话,如果要这样做我是不是就得自己写个Encoder方法来代替原有的ProtoBufEncoder?或者想请问有什么更好的分片传输的方法?
还有个问题是,有些文件小于500kb,这时只需要一次就可以了,但是有些文件大于500kb,则需要分片多次。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-03-20 18:09
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 3月20日

悬赏问题

  • ¥15 Mplus跑出来的数据只有原数据的一半
  • ¥15 vue项目添加全局处理解决一些开发问题
  • ¥40 微信小程序前后端交互
  • ¥15 linux安装依赖问题
  • ¥50 数据预处理(大量数据)
  • ¥15 多设备数据融合可视化显示控制
  • ¥15 公众号关键词自动回复超链接
  • ¥18 help me! 希望大家来看看 吉~
  • ¥15 C++显示超限兔子集结
  • ¥15 sql server 2012的下载出错