请教:关于FTP下载进度的问题

ribut9225 2006-12-22 06:31:26
偶写了一个FTP客户端程序
想要在程序里实现进度条显示FTP文件下载的进度
请各位指点一下,应如何做?

偶是通过CInternetSession和CFtpConnection来连接FTP服务器的

不知道如何下载及显示下载进度

请各位出手指点一下
谢谢先
...全文
339 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ribut9225 2007-01-01
  • 打赏
  • 举报
回复
谢谢各位
搞定
结贴
oyljerry 2006-12-27
  • 打赏
  • 举报
回复
根据总的大小,自己计算,大致精确就可以了
ppzine 2006-12-27
  • 打赏
  • 举报
回复
可以这样做,首先得到文件大小,把你每次下载的数据长度都加起来,做一个定时器每隔一段时间就与文件长计算一下除法,一般10秒一次就行,我看bt,emule都是这样算的
ribut9225 2006-12-27
  • 打赏
  • 举报
回复
顶起来
oicqhf 2006-12-27
  • 打赏
  • 举报
回复
用CFtpConnection类里面的OpenFile和CInternetFile类里面的Write可以自己控制每次写入的大小,从而设置进度条,这种方法绝对可以,下面是部分代码,如果有不明白的可以邮箱问我oicqhf@tom.com
CInternetSession* pSession;
CFtpConnection* pConnect;
CInternetFile* pFile;

pSession = new CInternetSession(AfxGetAppName(),1,PRE_CONFIG_INTERNET_ACCESS);
pConnect = NULL;
pFile = NULL;

try{
pConnect = pSession->GetFtpConnection(m_szFTPServer,m_szFTPUser,m_szFTPPass,m_nPort);
}catch (CInternetException* e) {
m_nErrorCode = e->m_dwError;
m_szError.Format("Connect Ftp server failed,the error code is:%d",m_nErrorCode);
AfxMessageBox(m_szError);
e->Delete();
pConnect = NULL;
return;
}
CFile file;
if (!file.Open(m_szLocalFile,CFile::modeRead))
{
m_szError.Format("Open % file failed!",m_szLocalFile);
AfxMessageBox(m_szError);
bSuccess = FALSE;
break;
}
DWORD nLength = file.GetLength();
BYTE* pBuf = new BYTE[nLength + 1];
file.ReadHuge(pBuf,nLength);
file.Close();
pBuf[nLength] = 0;
int nPart = 0;
nPart = nLength/1024 + 1;
m_Progress.SetRange(0,nPart);
m_Progress.SetPos(-1);
UpdateData(FALSE);
pFile = pConnect->OpenFile(m_szServerFile,GENERIC_WRITE);
for (int j = 0;j < nPart;j++)
{
BYTE* pTemp = pBuf + j*1024;
try{
pFile->Write(pTemp,1024);
}catch (CInternetException* e) {
m_nErrorCode = e->m_dwError;
m_szError.Format("Upload %s file failed!The error code is %d!",m_szLocalFile,m_nErrorCode);
AfxMessageBox(m_szError);
bSuccess = FALSE;
break;
}
m_Progress.SetPos(j+1);
m_nPos += 1;
m_allProgress.SetPos(m_nPos);
}
pFile->Close();
delete pBuf;
ribut9225 2006-12-26
  • 打赏
  • 举报
回复
请教一个算法
偶下载的文件有的只有几K,有的是500M
如果让进度条按下载进度操作??
能不能指点一下算法?
谢谢先
LiChenYue 2006-12-24
  • 打赏
  • 举报
回复
只要知道了自己下载了多少,不就好办了吗?没做过,不过觉得实现起来不难。
InTheLongRun 2006-12-22
  • 打赏
  • 举报
回复
RTRTRTR

18,356

社区成员

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

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