如题,目前有一个任务是使用Netty,并以ProtoBuf作为传输协议,分片传输文件,每片文件500K,我比较头晕的是,关于TCP的粘包问题,通过添加编码解码器可以解决,但是添加的编码解码器都是ProtoBuf自带的,已经写好了的编码和解码器,如果想要实现分片传输,我是不是需要重新修改一下ProtoBuf自带的编码器呢?下图是添加的编码和解码器。
下图则是ProtoBufEncoder的代码,看了下这个类是只读不能修改的。
关于分片传输,我先开始有一个想法是在客户端,对每一个文件在写入ctx之前,判断一下这个文件的字节数组要分片传输多少次,然后针对文件传输的.Proto文件我设置3个属性,分别是bytes(存储字节流)、string(记录文件名)、int(记录要分片传输多少次),然后通过记录的int要传输多少次,在Encoder编码文件中对其进行判断和拼接,但是目前来看的话,如果要这样做我是不是就得自己写个Encoder方法来代替原有的ProtoBufEncoder?或者想请问有什么更好的分片传输的方法?
还有个问题是,有些文件小于500kb,这时只需要一次就可以了,但是有些文件大于500kb,则需要分片多次。