MFC中的FTPClient:GetFile(下载)问题

时间:2010-09-22 11:27:48

标签: c++ mfc ftp

我正在使用CFtpConnection类使用MFC创建我的FTPClient库。 我正在使用GetFile从Server下载文件。 我的要求是,如果我在下载50-60 MB视频时从服务器下载100 MB视频,如果我播放它,那么它应该播放到那个特定位置时它已下载的那段时间。

这样我可以做任何我需要通过的附加参数或类似的东西吗?

我的FTPlibrary下载方法如下:

CFtpConnection* m_pConnect;
bool CFTPClient::Download(LPCTSTR pstrRemoteFile, LPCTSTR pstrLocalFile,
        DWORD dwFlags)
{
   m_pConnect->GetFile(pstrRemoteFile,pstrLocalFile,dwFlags); 
   return true;
}

在我的应用程序中调用时,我这样做:

CFTPClient m_objftpclient ; 
m_objftpclient.Download("MVI_2884_1.avi","D:\\MVI_2884_1.avi",FTP_TRANSFER_TYPE_BINARY);

1 个答案:

答案 0 :(得分:2)

你不能轻易地做到这一点,甚至根本不做。 CFtpConnection的GetFile方法是阻塞,这意味着它只在下载文件时才会退出。因此,即使您进行了线程化,您可以监视下载的唯一方法是获取磁盘上文件的大小。

如果您要实现视频流,则应该降低级别并在套接字级别工作。如果你真的想使用CFtpConnection,你应该使用OpenFile方法,它返回一个可以被块读取的CInternetFile,允许你监视下载并共享下载文件的缓冲区进行播放。