117 lines
5.3 KiB
C++
117 lines
5.3 KiB
C++
/****************************************************************************************/
|
||
/* 程序名:_ftp.h,此程序是开发框架的ftp客户端工具的类的声明文件。 */
|
||
/****************************************************************************************/
|
||
|
||
#ifndef __FTP_H
|
||
#define __FTP_H
|
||
|
||
#include "_el.h"
|
||
#include "ftplib.h"
|
||
|
||
namespace eviwbh
|
||
{
|
||
|
||
class cftpclient
|
||
{
|
||
private:
|
||
netbuf *m_ftpconn; // ftp连接句柄。
|
||
public:
|
||
unsigned int m_size; // 文件的大小,单位:字节。
|
||
string m_mtime; // 文件的修改时间,格式:yyyymmddhh24miss。
|
||
|
||
// 以下三个成员变量用于存放login方法登录失败的原因。
|
||
bool m_connectfailed; // 如果网络连接失败,该成员的值为true。
|
||
bool m_loginfailed; // 如果登录失败,用户名和密码不正确,或没有登录权限,该成员的值为true。
|
||
bool m_optionfailed; // 如果设置传输模式失败,该成员变量的值为true。
|
||
|
||
cftpclient(); // 类的构造函数。
|
||
~cftpclient(); // 类的析构函数。
|
||
|
||
cftpclient(const cftpclient&) = delete;
|
||
cftpclient& operator=(const cftpclient) = delete;
|
||
|
||
void initdata(); // 初始化m_size和m_mtime成员变量。
|
||
|
||
// 登录ftp服务器。
|
||
// host:ftp服务器ip地址和端口,中间用":"分隔,如"192.168.1.1:21"。
|
||
// username:登录ftp服务器用户名。
|
||
// password:登录ftp服务器的密码。
|
||
// imode:传输模式,1-FTPLIB_PASSIVE是被动模式,2-FTPLIB_PORT是主动模式,缺省是被动模式。
|
||
bool login(const string &host,const string &username,const string &password,const int imode=FTPLIB_PASSIVE);
|
||
|
||
// 注销。
|
||
bool logout();
|
||
|
||
// 获取ftp服务器上文件的时间。
|
||
// remotefilename:待获取的文件名。
|
||
// 返回值:false-失败;true-成功,获取到的文件时间存放在m_mtime成员变量中。
|
||
bool mtime(const string &remotefilename);
|
||
|
||
// 获取ftp服务器上文件的大小。
|
||
// remotefilename:待获取的文件名。
|
||
// 返回值:false-失败;true-成功,获取到的文件大小存放在m_size成员变量中。
|
||
bool size(const string &remotefilename);
|
||
|
||
// 改变ftp服务器的当前工作目录。
|
||
// remotedir:ftp服务器上的目录名。
|
||
// 返回值:true-成功;false-失败。
|
||
bool chdir(const string &remotedir);
|
||
|
||
// 在ftp服务器上创建目录。
|
||
// remotedir:ftp服务器上待创建的目录名。
|
||
// 返回值:true-成功;false-失败。
|
||
bool mkdir(const string &remotedir);
|
||
|
||
// 删除ftp服务器上的目录。
|
||
// remotedir:ftp服务器上待删除的目录名。
|
||
// 返回值:true-成功;如果权限不足、目录不存在或目录不为空会返回false。
|
||
bool rmdir(const string &remotedir);
|
||
|
||
// 发送NLST命令列出ftp服务器目录中的子目录名和文件名。
|
||
// remotedir:ftp服务器的目录名。
|
||
// listfilename:用于保存从服务器返回的目录和文件名列表。
|
||
// 返回值:true-成功;false-失败。
|
||
// 注意:如果列出的是ftp服务器当前目录,remotedir用"","*","."都可以,但是,不规范的ftp服务器可能有差别。
|
||
bool nlist(const string &remotedir,const string &listfilename);
|
||
|
||
// 从ftp服务器上获取文件。
|
||
// remotefilename:待获取ftp服务器上的文件名。
|
||
// localfilename:保存到本地的文件名。
|
||
// bcheckmtime:文件传输完成后,是否核对远程文件传输前后的时间,保证文件的完整性。
|
||
// 返回值:true-成功;false-失败。
|
||
// 注意:文件在传输的过程中,采用临时文件命名的方法,即在localfilename后加".tmp",在传输
|
||
// 完成后才正式改为localfilename。
|
||
bool get(const string &remotefilename,const string &localfilename,const bool bcheckmtime=true);
|
||
|
||
// 向ftp服务器发送文件。
|
||
// localfilename:本地待发送的文件名。
|
||
// remotefilename:发送到ftp服务器上的文件名。
|
||
// bchecksize:文件传输完成后,是否核对本地文件和远程文件的大小,保证文件的完整性。
|
||
// 返回值:true-成功;false-失败。
|
||
// 注意:文件在传输的过程中,采用临时文件命名的方法,即在remotefilename后加".tmp",在传输
|
||
// 完成后才正式改为remotefilename。
|
||
bool put(const string &localfilename,const string &remotefilename,const bool bchecksize=true);
|
||
|
||
// 删除ftp服务器上的文件。
|
||
// remotefilename:待删除的ftp服务器上的文件名。
|
||
// 返回值:true-成功;false-失败。
|
||
bool ftpdelete(const string &remotefilename);
|
||
|
||
// 重命名ftp服务器上的文件。
|
||
// srcremotefilename:ftp服务器上的原文件名。
|
||
// dstremotefilename:ftp服务器上的目标文件名。
|
||
// 返回值:true-成功;false-失败。
|
||
bool ftprename(const string &srcremotefilename,const string &dstremotefilename);
|
||
|
||
// 向ftp服务器发送site命令。
|
||
// command:命令的内容。
|
||
// 返回值:true-成功;false-失败。
|
||
bool site(const string &command);
|
||
|
||
// 获取服务器返回信息的最后一条(return a pointer to the last response received)。
|
||
char *response();
|
||
};
|
||
|
||
} // end namespace idc
|
||
#endif
|