请教ftp断点续传的问题

qiludadi 2004-04-01 01:09:44
遇到一个问题,请高手解决。
我用FtpCommand()发送REST 100之后,返回值为1
可我取数据时,还是从文件头开始?
怎么让他从指定位置开始读数据呢?
谢谢
...全文
68 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxq80 2004-04-08
  • 打赏
  • 举报
回复

我给个FTP下载的提示吧:
CInternetSession session;
CFtpConnection *pFtp=session.GetFtpConnection(FTP服务器地址,用户名,密码);
CInternetFile *pFtpFile=pFtp->OpenFile(文件路径);

CFile file;
int DownLength=0;//已经下载了的数据长度
if(目的目录下没有指定文件)//从头开始下载
{
file.Open(目的文件路径,CFile::modeCreate|CFile::modeWrite);
}
else//断点续传
{
file.Open(目的文件路径,CFile::modeWrite);
file.SeekToEnd();
DownLength=file.GetLength();
pFtpFile->Seek(DownLength,CFile::begin);
}
int SrcLength=pFtpFile->GetLength();
while(DownLength<SrcLength)
{
读源文件;
写目的文件;
}

loginboy 2004-04-02
  • 打赏
  • 举报
回复
这个问题我也碰到过,
开始想利用CInternetFile简化操作,试验后发现断点有问题,
后来用Socket发命令,又发现列目录有问题。
如果有谁解决了,请告诉一声,最好有例程
xuanzg 2004-04-02
  • 打赏
  • 举报
回复
to:qiludadi(Jane)
RETR
要有一系列的ftp动作
。。。
创建自己的数据socket
在把这个数据socket 信息
发给服务器。
服务器才给你发送数据。
。。。

good luck!
qiludadi 2004-04-01
  • 打赏
  • 举报
回复
to kof99th(小虫),xuanzg(小钢娃) :
这个SEEK是不支持的,用FtpCommand()发REST RETR不可以是吗?

现在只能用SOCKET 实现吗
xuanzg 2004-04-01
  • 打赏
  • 举报
回复
另:
你也可以用CInternetFile ,
成员函数:
Seek Repositions the pointer in an open file.
Read Reads the number of specified bytes.
Write Writes the number of specified bytes.
你也可以实现断点

不过我没怎么用过:)
GOOD WORK!
xuanzg 2004-04-01
  • 打赏
  • 举报
回复
inet 封装了
下载就是从头下载。
在FTP命令里,REST 100 之后发送RETR命令,可以断点序传
但是,
在这里就不灵了

你可以用socket 不过麻烦点。
kof99th 2004-04-01
  • 打赏
  • 举报
回复
我当时做的时候好象wininet.h中都没有这个函数(win2k),我自己加上后发现不好用,后来直接用socket发ftp命令搞定的.
zhaolaoxin 2004-04-01
  • 打赏
  • 举报
回复
gz

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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