2010-09-22 72 views
1

我正在使用CFtpConnection類創建我的FTPClient庫。 我正在使用GetFile從服務器下載文件。 我的要求就好像我從服務器下載100 MB視頻時,下載50-60 MB視頻時,如果我播放它,而它應該播放該特定位置,那麼它已經下載了該時間。MFC中的FTPClient:GetFile(下載)問題

就是這樣我可以做任何額外的參數,我需要通過或類似的東西?

我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); 

回答

2

你不能這樣做,很容易,甚至做這件事所有。 CFtpConnection的GetFile方法是阻塞的,這意味着它只會在文件下載時退出。所以,即使你對它進行線程化處理,你可以監視下載的唯一方法是獲取磁盤上文件的大小。

如果您即將實施視頻流,您應該降低關卡並在套接字級別工作。如果你真的想使用CFtpConnection,你應該使用OpenFile方法,它返回一個CInternetFile,它可以被塊讀取,讓你監視下載並共享下載文件的緩衝區以供播放。