www.pudn.com > vc-ftp.rar > MultiFtp.h
//--------------------------------------------------------------------------- #ifndef MultiFtpH #define MultiFtpH //--------------------------------------------------------------------------- #include#include #include "MultiFtpDownloadThred.h" #ifndef MultiFtpDownloadThreadH #include "MultiFtpDownloadThread.h" #endif #ifndef MultiThreadDealScoketH #include "MultiThreadDealScoket.h" #endif #ifndef MultiThreadDataClassH #include "MultiThreadDataClass.h" #endif #include //--------------------------------------------------------------------------- typedef void __fastcall (__closure *TOnGetFileSize)(TObject *Sender ,DWORD fileSize); typedef void __fastcall (__closure *TOnGetRate)(TObject *Sender ,DWORD cnt); class PACKAGE TMultiFtp : public TComponent { private: TOnComplete FOnComplete; TOnTextOut FOnTextOut; TOnException FOnException; TOnProgress FOnProgress; TOnGetFileSize FOnGetFileSize; TOnGetRate FOnGetRate; int FPerGetLen; String FHost; int FPort; String FUserName; String FPass; String FFileName; int FThreadCnt; String FLocalLoad; bool lock; protected: public: __fastcall TMultiFtp(TComponent* Owner); __fastcall ~TMultiFtp(); TComponent *Owner; bool isReadFile; SOCKET __fastcall ConnectFtp(String host ,int port,String userName ,String pass); void __fastcall DoOnComplete(); void __fastcall DoOnTextOut(String text); void __fastcall DoOnException (String error); void __fastcall DoOnProgress(DWORD pos); void __fastcall DoOnGetFileSize(DWORD fileSize); void __fastcall DoOnGetRate(DWORD cnt); String __fastcall GetCode(String revStr); DWORD __fastcall GetFtpFileSize(SOCKET client ,String fileName); DWORD __fastcall GetFileSize(); bool __fastcall CheckIsSupportMulti(SOCKET client); FileTail * __fastcall GetFilePosLen(); String __fastcall ConvertIntToStr(DWORD len); void __fastcall StartDownloadFile(); bool __fastcall ChangeDirectory(SOCKET client ,String dirName); String __fastcall SetCurrentDir(SOCKET client ,String dirName); void __fastcall WriteToFile(String filePath,DWORD pos ,char *buffer , int len); int __fastcall GetSuccessCode(); int __fastcall GetBusyCode(); void __fastcall AverageDownload(int successCode, int busyCode); DWORD __fastcall GetFileSizeByName(String fileName); DWORD fileSize; DWORD currentFilePos; FILE *globalFile; DWORD FilePos; bool isUseFile; bool FileLocked; FromToImpl *fromToImpl; InfroImpl inforImpl; int runningThreadCnt; bool stop; void __fastcall SetStop(bool stop); String FilePath ; DWORD perFilePos; //上一时刻文件已经接受的大小 bool __fastcall CreateNewFile(String fileName, DWORD size); bool __fastcall WriteInforToFile(); void __fastcall DivisionFile(); void __fastcall CreateThread(int code ,SOCKET client); void __fastcall GetInfor(String fileName); void __fastcall CreateInforImpl(String str); void __fastcall CreateInforImplFromString(String inforStr); void __fastcall DealTimer(MSG msg); void __fastcall FreeMemory(); String hisFileStr; __published: __property String Host = {read = FHost ,write= FHost}; __property int Port = {read = FPort ,write= FPort}; __property int PerGetLen = {read = FPerGetLen ,write= FPerGetLen}; __property String UserName = {read = FUserName ,write= FUserName}; __property String Pass = {read = FPass ,write= FPass}; __property String FileName = {read = FFileName ,write= FFileName}; __property int ThreadCnt = {read = FThreadCnt ,write= FThreadCnt}; __property String LocalLoad = {read = FLocalLoad ,write= FLocalLoad}; __property TOnComplete OnComplete={read = FOnComplete , write =FOnComplete}; __property TOnTextOut OnTextOut={read = FOnTextOut,write= FOnTextOut}; __property TOnException OnException = {read = FOnException ,write = FOnException}; __property TOnProgress OnProgress= {read = FOnProgress ,write = FOnProgress}; __property TOnGetFileSize OnGetFileSize={read=FOnGetFileSize,write=FOnGetFileSize}; __property TOnGetRate OnGetRate={read=FOnGetRate,write=FOnGetRate}; }; //--------------------------------------------------------------------------- #endif