请问如何象JetCar那样实现文件的分段同步下载

drmy 2000-08-17 10:12:00
...全文
187 10 打赏 收藏 转发到动态 举报
写回复
用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(JetCar)就是为解决这两个问题所写的,通过把一个文件分成几个部分同时下载可以成倍的提高速度,下载速度可以提高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 简体中文版是免费的,完全不需要注册,没有广告也没有任何功能方面的限制,只能运行在简体中文的操作系统上,如果使用其他语言的操作系统请下载国际版。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧