如何使用netty+protobuf来传输一个较大的文件(10m~100m)

如何使用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