downloadfile.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:4k
源码类别:

模拟服务器

开发平台:

C/C++

  1. ////////////////////////////////////////////////////////////////////////////////
  2. //  
  3. //  FileName    :   DownloadFile..h
  4. //  Version     :   1.0
  5. //  Creater     :   Linsuyi
  6. //  Date        :   2002-01-31  11:43:34
  7. //  Comment     :   CDownloadFile class header file
  8. //  
  9. ////////////////////////////////////////////////////////////////////////////////
  10. #if !defined(AFX_DOWNLOADFILE_H__E7F63D02_EA09_4DD2_8D47_AC9A4FD8A98A__INCLUDED_)
  11. #define AFX_DOWNLOADFILE_H__E7F63D02_EA09_4DD2_8D47_AC9A4FD8A98A__INCLUDED_
  12. #if _MSC_VER > 1000
  13. #pragma once
  14. #endif // _MSC_VER > 1000
  15. #include "BusyThread.h"
  16. #include "FtpDownload.h"
  17. #include "HttpDownload.h"
  18. #define PROXY_MODE_NONE                     0
  19. #define PROXY_MODE_HTTPGET                  1
  20. #define PROXY_MODE_HTTPCONNECT              2
  21. #define PROXY_MODE_SOCKS4                   3
  22. #define PROXY_MODE_SOCKS4A                  4
  23. #define PROXY_MODE_SOCKS5                   5
  24. #define PROXY_MODE_USEIE                    6
  25. #define DOWN_PROTOCOL_NONE                  0
  26. #define DOWN_PROTOCOL_HTTP                  1
  27. #define DOWN_PROTOCOL_FTP                   2
  28. #define DOWN_PROTOCOL_FILE                  3
  29. int GetUrlProtocolType(LPCTSTR lpszUrlPath);
  30. #define DOWN_RESULT_SUCCESS                 HTTP_RESULT_SUCCESS         // 成功
  31. #define DOWN_RESULT_SAMEAS                  HTTP_RESULT_SAMEAS          // 要下载的文件已经存在并且与远程文件一致,不用下载
  32. #define DOWN_RESULT_STOP                    HTTP_RESULT_STOP            // 中途停止(用户中断)
  33. #define DOWN_RESULT_FAIL                    HTTP_RESULT_FAIL            // 下载失败
  34. #define DOWN_RESULT_REDIRECTFTP             HTTP_RESULT_REDIRECTFTP     // 重定向到FTP
  35. #define DOWN_RESULT_REDIRECTHTTP            HTTP_RESULT_REDIRECTHTTP    // 重定向到FTP
  36. // for download thread
  37. #define MSG_DOWNLOAD_RESULT                 1000
  38. #define DOWN_STATUS_FILENAME                FTP_STATUS_FILENAME // HTTP_
  39. #define DOWN_STATUS_FILESIZE                FTP_STATUS_FILESIZE // HTTP_
  40. #define DOWN_STATUS_FILEDOWNED              FTP_STATUS_FILEDOWNLOADEDSIZE   // HTTP_
  41. //PFTPDOWNLOADSTATUS and PHTTPDOWNLOADSTATUS is the compatibility structure
  42. typedef PFTPDOWNLOADSTATUS                  PDOWNLOADSTATUS;
  43. int GetUrlProtocolType(LPCTSTR lpszUrlPath);
  44. class CDownloadFile : public CBusyThread
  45. {
  46. public:
  47.     CDownloadFile();
  48.     virtual ~CDownloadFile();
  49.     
  50. public:
  51.     int SetSavePath(LPCTSTR lpszSavePath);
  52.     
  53. public:
  54.     void SetTimeout(
  55.         ULONG ulSendTimeout,
  56.         ULONG ulRecvTimeout,
  57.         ULONG ulConnTimeout
  58.     );
  59.     void SetProxy(
  60.         int nProxyMode,
  61.         LPCTSTR lpszProxyHost,
  62.         int nProxyPort,
  63.         LPCTSTR lpszProxyUserName,
  64.         LPCTSTR lpszProxyPassword
  65.     );
  66.     
  67. public:
  68.     int StartDownload(LPCTSTR lpszUrlPath, BOOL nEnableResume = TRUE, LPCTSTR lpszSaveAs = NULL);
  69.     int StopDownload();
  70.     
  71.     void SetNotifyWnd(HWND hNotifyWnd, ULONG ulNotifyMsg);
  72.     
  73. protected:
  74.     BOOL DownOneFile();
  75. protected:
  76.     virtual ULONG MainExecution();
  77.     
  78. protected:
  79.     HWND  m_hNotifyWnd;
  80.     ULONG m_ulNotifyMsg;
  81.     
  82.     ULONG m_ulNotifyCode;
  83.     
  84.     CFtpDownload m_FtpDownload;
  85.     CHttpDownload m_HttpDownload;
  86.     // CFileDownload m_FileDownload;
  87.     
  88. protected:
  89.     CString m_strSaveDirPath;
  90.     
  91.     int m_nForceDown;
  92.     CString m_strDownUrlPath;
  93.     
  94.     CString m_strSaveFilePath;
  95.     
  96.     int m_nDownProtocol;
  97. HANDLE m_hstartdown;
  98. HANDLE m_hdowning;
  99. };
  100. #endif // !defined(AFX_DOWNLOADFILE_H__E7F63D02_EA09_4DD2_8D47_AC9A4FD8A98A__INCLUDED_)