DELPHI高性能大容量SOCKET并发(八):断点续传

DELPHI实现网络下载断点续传技术 分块技术是将一个文件按照特定大小分成多个连续的块,每个块可以独立进行传输处理。它在断点续传中的作用是使文件传输具有高度的可中断性与恢复性。当网络传输由于某种原因中断时,客户端和服务器只需重新传输未完成的块,而无需重新发送整个文件。这种机制极大地提升了网络传输的效率和用户体验。 阅读详情

断点续传

断点续传主要是用在上传或下载文件,一般做法是开始上传的时候,服务器返回上次已经上传的大小,如果上传完成,则返回-1;下载开始的时候,由客户端上报本地已经下载大小,服务器根据位置信息下发数据,因此上传下载协议都需要带Size大小,例如我们协议格式。

上传开始:

客户端->服务器

{

[Request]

Command=Upload

Dir=Dir                        #目录,全路径名

FileName=FileName      #文件名(不包括路径)

}

服务器->客户端

{

[Response]

Command=Upload

Code= Error Code                #错误码

Message=Message                 #如果出错,返回错误描述信息

FileSize=FileSize                 #已上传文件的大小,用于续传

}

下载开始:

客户端->服务器

{

[Request]

Command=Download

Dir=Dir                        #目录,全路径名

FileName=FileName      #文件名(不包括路径)

FileSize=FileSize          #客户端本地文件大小,用于断点续传

PacketSize=PacketSize   #下发数据包大小,单位为KB,用于速度测试

}

服务器->客户端

{

[Response]

Command= Download

Code= Error Code                #错误码

Message=Message                 #如果出错,返回错误描述信息

}

多线程并发下载

断点续传的一个应用就是并发下载,做法是客户端起多个线程并发请求同一个文件,每个线程下文件的一部分,全部下载完成后,把每个数据块合并为一个文件。这个服务端和客户端协议都不需要修改,只是需要做下载逻辑的更改。

多线程并发上传

这个需要定义通讯来支持这个逻辑,主要是服务器要提供合并多个数据文件为一个文件的协议逻辑。

V1版下载地址:http://download.youkuaiyun.com/detail/sqldebug_fan/4510076,需要资源10分,有稳定性问题,可以作为研究稳定性用;

V2版下载地址:http://download.youkuaiyun.com/detail/sqldebug_fan/5560185,不需要资源分,解决了稳定性问题和提高性能;免责声明:此代码只是为了演示IOCP编程,仅用于学习和研究,切勿用于商业用途。水平有限,错误在所难免,欢迎指正和指导。邮箱地址:fansheng_hx@163.com
delphi 多线程断点续传支持超大文件2G以上传输带源码 多线程网络传输大都没有实现大于2G文件,在前人基础上改写的真正的多线程网络传输,不受文件大小的限制!先上传大文件上传的完整代码,有需要大文件超过2G的下载,请留言! 立即下载

相关推荐

Delphi多线程 断点续传 下载模块源码.rar

一个Delphi支持多线程的断点续传下载模块源码,可用在Delphi下载程序中,部分参数设置:    dtAddTime : TDateTime; //发布时间    sResTitle : string; //资源名称    sDownloadURL, sSavedPath : string; //下载及保存路径    iThreadCount : Integer; //线程数    aGauge : TGauge; // 进度条    procedure StartJob; // 初始化并开始下载    procedure StopJob; // 停止下载    procedure GetProgressInfo; // 获取下载进度信息    procedure GetDownloadInfo; // 计算下载速度    function GetStrTime(i : Integer) : string; //将秒转换为00:00:00的形式    iIndex : Integer; // StringGrid 中对应的行号    iStaus : Integer; //状态:0:停止;1:正在下载;    bStop : Boolean;    bFinished : Boolean; //下载是否完成    bGetInfo : Boolean;    iResSize : Integer; //资源大小(字节)    iResDownloadSize : Integer; //资源已经下载大小(字节)    iResThisDownloadSize : Integer; //资源本次下载大小(字节)    dwStartTime : DWORD; //下载开始时间

lazarus、delphi文件下载断点续传的实现

本文介绍利用miniframe开源Web框架分别在lazarus、delphi下实现文件HTTP下载断点续传的功能,本文Demo还实现了批量下载文件,同步服务器上的文件到客户端的功能。文件断点续传原理:分块下载,下载后客户端逐一合并,同时保存已下载的位置,当意外中断再次下载时从保存的位置开始下载即可。

未来的专栏 376

delphi断点续传http下载源码

delphi断点续传http下载源码,支持断点续传,支持非80端口的http下载

Delphi XE2 使用IdHttp下载文件(Get方法),支持断点续传

历时2天封装并自测了本页中的线程类。使用IdHttp实现文件下载,支持暂停下载、断点续传,使得文件下载更快;与UI的交互使用消息传递机制实现。源码已经在项目中使用,现将源码成果公布出来,供需要的人参考。线程处理的逻辑大致如下:1、先判断本地是否存在文件,如果没有,使用文件名+.tmp作为下载过程中的文件名;下载完成后更名为原始文件名;2、如果存在文件名+.tmp,载入内存后继续下载(断点续传);3...

yueyun889的专栏 4167

delphi多线程HTTP断点续传下载

delphi多线程HTTP断点续传下载演示的程序代码,可参考

DELPHI断点续传.rar

DELPHI断点续传.rar

【亲测免费】 Delphi 大文件多线程断点续传组件

Delphi 大文件多线程断点续传组件 【下载地址】Delphi大文件多线程断点续传组件 本仓库提供了一个针对Delphi开发环境的高级网络传输解决方案,专门设计用于解决传统多线程传输在处理大于2GB的大文件时遇到的限制。基于已有的技术进行深入优化和扩展,此组件实现了真正的无限制文件大小的多线程传输功能,完美适应超大文件...

gitblog_09738的博客 996

HTTP多线程断电续传下载

要实现多线程http协议下载文件的功能,支持断点续传和多线程同时下载

一、delphi 开发的基于win socket文件传输系统(支持超4G文件,断点续传,多线程同时能传输100个文件以上,支持文件夹压缩传输)

delphi 自带的TIdFtpServer和TIdFtpClient组件,在实际应用中发现,只能单线程传输较小的文件。有很大局限性。决定自己写一个文件传输系统。该传输系统经测试,可以同时传输100个文件以上,超过4G大小的文件,支持断点续传。同时支持对文件夹的压缩传输。基本满足业务的要求。现在把服务器端和客户端代码粘贴如下: 一、服务器端 unit uTransFileSrv; inte...

byc6352的专栏 1207

Delphi断点续传!!!!

在下载有用的软件的时候常常因为网络或者其他原因突然断网,已经下载了一部分的软件又要重新下载,于是断点续传出现在网络上,大量的下载工具软件都支持这个功能,其意义就是可以继续上次没有下载完的文件下载,节省时间,不过断点续传功能需要服务器支持,现阶段的绝大多数服务器都支持断点续传。

断点续传的DELPHI实现..rar

断点续传的DELPHI实现..rar

二、delphi 开发的基于win socket文件传输系统(支持超4G文件,断点续传,多线程同时能传输100个文件以上,支持文件夹压缩传输)客户端

delphi 自带的TIdFtpServer和TIdFtpClient组件,在实际应用中发现,只能单线程传输较小的文件。有很大局限性。决定自己写一个文件传输系统。该传输系统经测试,可以同时传输100个文件以上,超过4G大小的文件,支持断点续传。同时支持对文件夹的压缩传输。基本满足业务的要求。现在把服务器端和客户端代码粘贴如下: 一、客户端 1、传输单元 unit uTransF...

byc6352的专栏 1447

DELPHI断点续传

DELPHI断点续传 DELPHI断点续传 DELPHI断点续传 DELPHI断点续传

DELPHI高性能大容量SOCKET并发(三):接收、发送、缓存

接收 完成端口是结合重叠端口一起使用的,在接收数据之前,我们需要投递一个接收请求,使用function WSARecv(s: TSocket; lpBuffers: LPWSABUF; dwBufferCount: DWORD;  var lpNumberOfBytesRecvd, lpFlags: DWORD; lpOverlapped: LPWSAOVERLAPPED;  lpCompl

SQLDebug_Fan的专栏 1万+

python实现断文件点续传

此代码基于python实现了服务器/客户端的断点续传,可以作为网络编程中的参考。

delphi源码 下载HTTP文件,支持断点续传

TidHTTP控件下载网络文件,支持断点续传。

使用delphi-cross-socket 开发kbmmw smart http service

前几天我说了使用delphi-cross-socket 扩展kbmmw 的跨平台支持,今天我说一下使用 kbmMWCrossScoketHttpServerTransport 在linux 下支持 kbmmw 的samrt HTTP service. 本例子基于以前的 使用delphi 10.2 开发linux 上的Daemon 。 我们首先在dm 里面放置两个控件。 加入我们的sma...

weixin_33827590的博客 530

第一届“龙信杯”电子数据取证竞赛Writeup

第一届“龙信杯”电子数据取证竞赛Writeup

toto的博客 1万+
上一篇: DELPHI高性能大容量SOCKET并发(七):通讯协议
下一篇: DELPHI高性能大容量SOCKET并发(九):稳定性问题解决
SQLDebug_Fan
博客等级 码龄17年 710粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值