文章目录
一、源代码说明
freecplus是一个Linux系统下的C/C++开源框架,源代码请前往C语言技术网(www.freecplus.net)下载。
本文介绍的是freecplus框架的ftp客户端Cftp类。
Cftp类的声明文件是freecplus/_ftp.h。
Cftp类的定义文件是freecplus/_ftp.cpp。
示例程序位于freecplus/demo目录中。
编译规则文件是freecplus/demo/makefile。
Cftp类是在ftplib开源库的基础之上做了二次封装,ftplib开源库的头文件是freecplus/ftplib.h,函数定义文件是freecplus/ftplib.c。
ftplib是C代码,用gcc先编译成lib库文件后,再用g++和_ftp.cpp以及目标文件一起编译。
二、概述
本文不会介绍ftp协议的基础知识和ftp命令,在阅读本文之前,您必须熟悉ftp协议和命令才能看懂本文的内容。
三、Cftp类
类的声明:
class Cftp
{
public:
netbuf *m_ftpconn; // ftp连接句柄。
unsigned int m_size; // 文件的大小,单位:字节。
char m_mtime[21]; // 文件的修改时间,格式:yyyymmddhh24miss。
// 以下三个成员变量用于存放login方法登录失败的原因。
bool m_connectfailed; // 连接失败。
bool m_loginfailed; // 登录失败,用户名和密码不正确,或没有登录权限。
bool m_optionfailed; // 设置传输模式失败。
Cftp(); // 类的构造函数。
~Cftp(); // 类的析构函数。
void initdata(); // 初始化m_size和m_mtime成员变量。
// 登录ftp服务器。
// host:ftp服务器ip地址和端口,中间用":"分隔,如"192.168.1.1:21"。
// username:登录ftp服务器用户名。
// password:登录ftp服务器的密码。
// imode:传输模式,FTPLIB_PASSIVE是被动模式,FTPLIB_PORT是主动模式,缺省是被动模式。
bool login(const char *host,const char *username,const char *password,const int imode=FTPLIB_PASSIVE);
// 注销。
bool logout();
// 获取ftp服务器上文件的时间。
// remotefilename:待获取的文件名。
// 返回值:false-失败;true-成功,获取到的文件时间存放在m_mtime成员变量中。
bool mtime(const char *remotefilename);
// 获取ftp服务器上文件的大小。
// remotefilename:待获取的文件名。
// 返回值:false-失败;true-成功,获取到的文件大小存放在m_size成员变量中。
bool size(const char *remotefilename);
// 改变ftp服务器的当前工作目录。
// remotedir:ftp服务器上的目录名。
// 返回值:true-成功;false-失败。
bool chdir(const char *remotedir);
// 在ftp服务器上创建目录。
// remotedir:ftp服务器上待创建的目录名。
// 返回值:true-成功;false-失败。
bool mkdir(const char *remotedir);
// 删除ftp服务器上的目录。
//