socket分块接收_fileex: 一款基于netty、http1.1 transfer-encoding:chunked、websocket实现的大文件分块上传断点续传处理器...

fileex

介绍

针对大文件的分块传输和断点续传设计实现的处理器(支持上传和下载),同时具备上传/下载进度和上传/下载速度的推送功能。

本项目的前端项目和客户端项目并不是单独部署到一台服务器的,是在本机启动,因为使用前端页面与服务端实现大文件传输协议对于我来说有点困难...

而且对编写java桌面客户端没有实战过。所以前端项目和客户端项目在本机启动,读取本机系统的文件,并提供页面操作

软件架构

frontend-service 简单实现的前端页面(依赖netty-client)

netty-client netty客户端 (依赖netty-common)

netty-common netty客户端服务端公共项目

netty-server netty服务端 (依赖netty-common)

mongodb 提供数据服务(上传任务、下载任务、已上传完的文件数据)

技术实现

分块传输使用HTTP1.1协议的transfer-encoding:chunked,netty客户端和服务端上添加

pipeline.addLast("chunkedWriter", new ChunkedWriteHandler());

断点续传主要使用了RandomAccessFile类来实现,不过该类是大量磁盘IO操作,所以效率不太高。

客户端首次上传文件时,不会使用RandomAccessFile进行分割,若此时停止上传再继续上传,客户端会首先请求服务端获取当前文件上传多少长度,客

户端得到该长度会使用RandomAccessFile进行分割文件得到新的文件再次调用上传接口进行上传。

下载同样道理,只是是由客户端得到当前文件已下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值