社区
Delphi
帖子详情
请问如何象JetCar那样实现文件的分段同步下载
drmy
2000-08-17 10:12:00
...全文
189
10
打赏
收藏
请问如何象JetCar那样实现文件的分段同步下载
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fantsy
2000-08-20
打赏
举报
回复
关注!
drmy
2000-08-20
打赏
举报
回复
还有人知道吗?还是不想告诉我?
drmy
2000-08-18
打赏
举报
回复
多谢blind_man,等我研究一下。
shines77
2000-08-18
打赏
举报
回复
关注
blind_man
2000-08-18
打赏
举报
回复
不错,用断点续传可以解决这个问题。
清华出版的一本叫做《因特网应用编程》的书(在海店读书城可以买到)中有这方面的解释。
它里面有实现断点续传的HTTP和FTP服务器的例子,不过是用VC++编写的。我已将这些例子
发送给你了,不知是否有帮助。
drmy
2000-08-18
打赏
举报
回复
谁能给个例子程序?
drmy
2000-08-17
打赏
举报
回复
谢谢,可以更详细点吗?
U皮特U
2000-08-17
打赏
举报
回复
下载文件的过程等同于打开一个远程文件,分块读取,写入本地文件,关闭远程文件。分段下载的原理是这样的:首先取得远程文件的长度,然后移动文件指针比如100个字节,如果成功,表示支持断点续传,可以分段下载,否则不支持断点续传,只能连续下载。
如果支持断点续传,通过一个分段策略(比如文件长度小于10K就不分段等等)将文件平分为n段,然后创建n个线程,每个线程都打开远程文件,将文件指针移动到本线程负责的分段的首位置,开始读取文件,直至本分段内容读取完成。如果此时其它线程工作还没有完成,可以选择其中一个最长的分段再一分为二,接管后面那段继续工作。
还应该有一个总管线程,负责监视当前每个下载线程已读取的字节数,如果超过一个规定的数值(比如100K),就将已读取的字节写入本地文件相应的位置,然后刷新各线程的工作状态,保证读取文件的同步。
zhouzq
2000-08-17
打赏
举报
回复
关注
U皮特U
2000-08-17
打赏
举报
回复
原理应该说得很清楚了,再详细就涉及到编码了。你可以看一下CInternetSession,CHttpConnection,CFtpConnection,CInternetFile这几个类,串接在一起就能完成下载远程文件的工作。得到打开的CInternetFile就可以象正常文件操作那样移动文件指针(实现分段下载、断点续传等)、读取等。其中对FTP有一些特殊,不支持文件指针移动,一般通过创建Socket连接,然后发送FTP命令的方式实现,具体FTP命令的使用可以用一些常用的FTP工具象CuteFTP,BulletFTP等实际下载一个文件,它们的记录窗口中都有显示具体命令发送的过程(包括文件指针移动),用网络蚂蚁看一下也行。
网际快车(FlashGet) V1.71 简体中文版
下载
的最大问题是什么——速度,其次是什么——
下载
后的管理。网际快车FlashGet(
Jet
Ca
r)就是为解决这两个问题所写的,通过把一个
文件
分成几个部分同时
下载
可以成倍的提高速度,
下载
速度可以提高100%到500%。网际快车可以创建不限数目的类别,每个类别指定单独的
文件
目录,不同的类别保存到不同的目录中去,强大的管理功能包括支持拖拽,更名,添加描述,查找,
文件
名重复时可自动重命名等等。而且
下载
前后均可轻易管理
文件
。支持mms协议,支持rtsp协议。 支持换肤功能,使您的FlashGet更漂亮。 Internet上的
文件
一般都在多个站点上有镜像,从每个站点
下载
的速度是不同的,如果从较近的地方
下载
通常就很快,例如从国内的服务器上
下载
文件
通常比从国外的服务器上
下载
文件
要快的多。FlashGet就可以从不同的服务器
下载
同一个
文件
并且会从较快的一个或者几个站点
下载
,如果一个服务器有了问题会自动切换到其他的镜像站点
下载
。Ftp Search提供了查找这些镜像的功能,不过Ftp Search查找到的
文件
一般都位于国外对于国内的用户有时没有太大意义,为此特别推出了对国内用户非常有利的FlashGet专用的
文件
镜像服务。FlashGet的
文件
镜像服务是一个专门提供给FlashGet用户使用的匿名URL共享系统。如果一个FlashGet的用户在
下载
的时候把
下载
文件
的URL共享出来,那么当其它的用户在
下载
同样的
文件
的时候,就会多了一个镜像地址. 这是一个互惠的过程,如果您提供了共享的地址(URL),其它的用户就可以得到该信息,同样您
下载
的时候也会得到其它用户提供的地址(URL)。共享地址(URL)是在FlashGet中是一个可选项,越多的用户共享地址(URL),FlashGet的
文件
镜像服务数据库就越好,查找到的镜像服务站点也就越多,就越可能从最快的站点
下载
。虽然用户在FlashGet打开了共享地址(URL)的选项,也还是有一些限制的URL不会共享的。 专门为国内用户而设的
文件
镜像服务使得FlashGet的镜像功能(多地址
下载
)有了用武之地可以使
下载
速度大大提高!.强烈推荐用户使用。 网际快车FlashGet 1.70更新情况(2005.8) * 改进了shareurl服务 * 增加了mp3,软件,游戏,网页的搜索 * 一些细小的调整 * 修改一些Bug 简体中文版是免费的,完全不需要注册,没有广告也没有任何功能方面的限制,只能运行在简体中文的操作系统上,如果使用其他语言的操作系统请
下载
国际版。
网际快车flashget 3.0
网际快车FlashGet(原名:
Jet
Ca
r)就是为解决这两个问题所写的,通过把一个
文件
分成几个部分同时
下载
可以成倍的提高速度,
下载
速度可以提高100%到500%。 FlashGet可以创建不限数目的类别,每个类别指定单独的
文件
目录,不同的类别保存到不同的目录中去,强大的管理功能包括支持拖拽,更名,添加描述,查找,
文件
名重复时可自动重命名等等,而且
下载
前后均可轻易管理
文件
。新版本中更添加了镜像和自动镜像查找功能使得
下载
速度再上一个台阶。
老版本的flashget,最精简,绿色免安装
老版本的flashget,最精简,绿色免安装,
下载
后直接可用。适合老机器使用。
实现
FTP多线程
下载
(vc)
现在有不少软件可
实现
多线程
下载
.如NetAnts,
Jet
Ca
r等,其实多线程
下载
的原理并不复杂,主要的两项技术就是多线程和断点
下载
。程序中开启多个线程,每个线程利用断点
下载
,分别
下载
文件
的不同部分,
下载
完后合并,就可以了。多线程编程很多书已有介绍,这里不再重复,关于断点
下载
,MFC中提供的CInternetFile类可
实现
HTTP的断点
下载
,但无法
实现
FTP的断点
下载
。因此,我们只好从FTP协议中的命令入手,自己编写个FTP类,来
实现
多线程
下载
。本人编写的CMultiFTP类(在
实现
FTP多线程
下载
现在有不少软件可
实现
多线程
下载
.如NetAnts,
Jet
Ca
r等,其实多线程
下载
的原理并不复杂,主要的两项技术就是多线程和断点
下载
。程序中开启多个线程,每个线程利用断点
下载
,分别
下载
文件
的不同部分,
下载
完后合并,就可以了。多线程编程很多书已有介绍,这里不再重复,关于断点
下载
,MFC中提供的CInternetFile类可
实现
HTTP的断点
下载
,但无法
实现
FTP的断点
下载
。因此,我们只好从FTP协议中
Delphi
5,388
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章