如何使用netty+protobuf来传输一个较大的文件(10m~100m),希望附有源码,最好还有原理解释,不胜感激
大文件的接收与发送要分片发送与读取,也就是说用while循环发送,循环接收。
我知道这个操作,但是因为使用protobuf,里面就会有一些需要传输的属性,比如文件的大小,名称,发送时间等,把这些杂糅在一起我不知道如何去写这个代码,请老师帮我写一下这个代码,这个 问题我已经问了很多人了,但是他们只是说了我也知道的这种思路,我不太清楚如何用代码去实现他,希望老师帮个忙,谢谢
我也试过了,他不知怎么的就还是包呢个错,除非我已开始发送的他就是小于1024.
byte[] bytes = new ChooseFileFrame().getFileStream();
int num = bytes.length/100 + 1;
System.out.println(num);
byte[] part = null;
channelFuture = bootstrap.connect("127.0.0.1",6667).sync();
for (int i = 0;i < num;i++){
System.out.println(bytes.length-100*i);
if (i == num-1) {
part = Arrays.copyOfRange(bytes,100*i,bytes.length);
} else
part = Arrays.copyOfRange(bytes,100*i,100*(i+1));
channelFuture.channel().pipeline().writeAndFlush(MyMessageProtobuf.MyMessagePOJO.MyMessage
.newBuilder()
.setMessageType(MyMessagePOJO.MyMessage.MessageType.FileType)
.setFile(MyMessagePOJO.FileInfo.newBuilder()
.setInfo(ByteString.copyFrom(part)))
.build());
}
楼主解决了吗?设置缓冲区管用吗
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员【8折】购 ,仅需→¥23.2,即可享受5次/月 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m