FTPDownFile.h
资源名称:Client.rar [点击查看]
上传用户:szjkjd
上传日期:2022-06-27
资源大小:8968k
文件大小:4k
源码类别:
浏览器
开发平台:
Visual C++
- /*! @ftpdownfile.h
- ********************************************************************************
- <PRE>
- 模块名 : FTP下载功能头文件
- 文件名 : ftpdownfile.h
- 相关文件 : ftpdownfile.cpp,
- 文件实现功能 : 实现文件在后台通过FTP下载的功能
- 作者 : 刘俊
- 版本 : 1.0
- --------------------------------------------------------------------------------
- 备注 : -
- --------------------------------------------------------------------------------
- 修改记录 :
- 日 期 版本 修改人 修改内容
- 2010/02/08 1.0 刘俊 创建
- </PRE>
- ********************************************************************************
- * 版权所有(c) 2010, 17JGAGO, 保留所有权利
- *******************************************************************************/
- #include <afx.h>
- #include <stdlib.h>
- #include <iostream>
- #include <WinSock2.h>
- #include <math.h>
- #include "shlwapi.h"
- // 记录FTP SOCKET接收的信息的字符串数组大小
- const int INTRECVMSGSIZE = 502;
- #pragma once
- #ifndef __FTPDOWNFILE_H__
- #define __FTPDOWNFILE_H__
- #endif
- /*! @CFTPDownFile
- ********************************************************************************
- <PRE>
- 类名称 : CFTPDownFile
- 功能 : 实现文件在后台通过FTP下载的功能
- 异常类 :
- --------------------------------------------------------------------------------
- 备注 : -
- 典型用法 : - CFTPDownFile.SOCKETINIT();
- CFTPDownFile.ConectFTPCOMMAND();
- CFTPDownFile.ConectFTPCOMMAND();
- CFTPDownFile.SendUsername();
- CFTPDownFile.cFTP.SendPWD();
- CFTPDownFile.Startdown(test.txt, c:\test.txt, false);
- CFTPDownFile.CloseCommandConect();
- --------------------------------------------------------------------------------
- 作者 : 刘俊
- </PRE>
- *******************************************************************************/
- class CFTPDownFile
- {
- public:
- /////////////////////// 构造、析构、初始化 ///////////////////////////////////
- CFTPDownFile(void);
- virtual ~CFTPDownFile(void);
- /////////////////////////////// 公用方法 ////////////////////////////////////
- // FTP网络信息初始化设定,包括IP,端口,用户名,密码,设置成功返回TRUE,否则返回FALSE
- bool SetFTPinfo(const char *pFTP_SERVER_IP, USHORT usPort, const char *pUsername, const char *pPwd);
- // FTP网络类SOCKET版本检查初始化工作,成功返回TRUE,否则返回FALSE
- bool SOCKETINIT();
- // FTP连接命令通道,连接成功,返回TRUE,否则返回FALSE
- bool ConectFTPCOMMAND();
- // 命令通道关闭
- void CloseCommandConect();
- // 取得FTP返回的信息
- char *GetFTPRecvMsg();
- // 发送用户名,正常的话返回值 > 0,否则 = 0;
- int SendUsername();
- // 发送密码,正常的话返回值 > 0,否则 < 0;
- int SendPWD();
- // 取得所要下载的文件的大小,,成功返回TRUE,否则返回FALSE
- bool GetFTPfilesize();
- // 设置下载文件名和下载到本地的文件名,包含路径,第一个参数为FTP文件名,第二个为下载到本地后的文件名
- void SetFTPdownfilename(const char*, const char*);
- // 记录LOG信息
- void WriteLOG(const char*);
- // 开始下载文件,下载失败返回0,顺利完成下载返回1,文件已存在返回2,参数错误返回-1
- // 第一个参数为FTP文件名,第二个为下载到本地后的文件名,第三个参数为是是续传,FALSE则续传,TRUE则删除原来的文件,重新下载
- short Startdown(const char*, const char*, bool bRestart);
- // 发送FTP命令,让FTP服务器进入监听模式
- void SendFTPListenCommand();
- // 发送文件偏移命令,参数为偏移大小
- void SendFTPFileSeek(ULONGLONG ull);
- // 发送开始接收文件命令
- void SendFTPstartsendfile();
- // 接收FTP文件,写入本地硬盘
- static UINT RevandWritefile(LPVOID pParam);
- // 停止下载
- void Stopdown();
- // 检查文件路径是否存在,不存在的话则创建
- void CreatePath(CString strPath);
- ///////////////////////////// 属性 ////////////////////////////////////////
- // 所要下载FTP文件的大小
- double m_dFTPfilesize;
- // 记录已经下载文件的大小
- double m_dRecv;
- private:
- // FTP server IP
- char m_chFTPIP[20];
- // FTP 端口
- USHORT m_usPort;
- // FTP登录用户名
- char m_chUserName[20];
- // FTP登录密码
- char m_chFTPPwd[20];
- // 命令通道SOCKET
- SOCKET m_sockCOMMAND;
- // 命令通道sockaddr_in
- sockaddr_in m_sinCommand;
- // 数据通道SOCKET
- SOCKET m_sockDATA;
- // 记录FTP返回的信息
- char m_chRecvFTPmessage[INTRECVMSGSIZE];
- // 要下载的文件名,包含路径
- char m_chFTPfilename[1024];
- // 下载到本地的文件名,包含路径
- char m_chLocalfilename[1024];
- // 本地文件操作类
- CFile m_fLocalfile;
- // 继续下载标志,TURE时表示可以继续下载,FALSE表示要停止下载
- bool m_bDown;
- };