我正在使用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);
答案 0 :(得分:2)
你不能轻易地做到这一点,甚至根本不做。 CFtpConnection的GetFile方法是阻塞,这意味着它只在下载文件时才会退出。因此,即使您进行了线程化,您可以监视下载的唯一方法是获取磁盘上文件的大小。
如果您要实现视频流,则应该降低级别并在套接字级别工作。如果你真的想使用CFtpConnection,你应该使用OpenFile方法,它返回一个可以被块读取的CInternetFile,允许你监视下载并共享下载文件的缓冲区进行播放。