一、下载:
1、向服务器发送“REST + 本地文件长度”命令,告诉服务器,客户端要断点下载了。这时服务器还不知道客户端要下载哪个文件;
要实现FTP的断点续传,FTP服务器必须支持REST指令,这条指令在FTP协议文本RFC959中就已经定义了,不过它不是FTP服务器必须支持的指令。一般,你可以在下载前使用REST 100命令进行实验,如果服务器正常执行了这条命令,说明该服务器支持FTP断点续传。REST后面跟的数表示下载文件的起始位置,而REST 0表示从文件最开始处下载。REST命令本身并不执行下载功能,你仍需要使用RETR命令执行下载工作。
2、向服务器发送“RETR + 文件名”命令,通知服务器要下载的文件名,这时服务器开始定位文件指针读文件并发送数据。
3、客户端定位本地文件指针(文件末尾);
4、两端的准备工作都做完了以后,客户端创建socket,以被动或非被动方式建立数据通道,循环调用recv接收数据并追加入本地文件;
二、上传:
1、获取服务器上和本地要上传文件的同名文件大小;
2、向服务器发送“APPE + 文件名”,通知服务器,接下来从数据通道发送给你的数据要附加到这个文件末尾。
3、定位本地文件指针(和FTP上文件大小相同的位置)
4、从文件指针处读数据并发送。
代码里将断点上传和断点下载放到同一个函数(MoveFile)里,通过get参数说明是上传还是下载。
qq在传送文件时支持断点续传功能(所谓断点续传,也就是说转送的过程中如果网络中断,则下次连线后可以从上次断开的地方接着传,不至于前功尽弃),但需要用户打开启用断点续传的选项。具体设置步骤如下:(1)左键单击状态栏上的qq图标,在d出的菜单中选择“个人设置”,再在d出的窗口中选择“系统设置”
(2)选择窗口左侧栏内的“传输文件设置”项,可以按照右侧d出的相应面板修改传输文件的设置。
(3)选中“当别人给我传文件时,使用断点续传机制”复选框,同时可以选择cache(断点续传文件缓冲文件)目录位置。
(4)选中下面的“当接收大文件(>10mb)中断时,提醒我是否保留在cache目录”,这样可以在传送失败时,能够接着续传。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)