#ifndef FTPTOOLS_H_
#define FTPTOOLS_H_
#define BUFFER 1024 /* buffer max size */
#define PATH 128 /* path buffer max size */
#define MAXFILE 10 /* transfer file max size */
#define LOGPATH "log" /* log file path */
#define TMPPATH "tmp" /* temp file path */
#define ETCPATH "etc" /* configuration/task file path */
#include<string>
#include<stdlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <dirent.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
using namespace std;
typedef struct sockaddr_in SOCKINF;
typedef struct tm TIMEINF;
typedef struct dirent DIRINF;
typedef struct stat STAT;
class FTPTools
{
private:
string ftpServer;
int ftpPort;
string serverPath;
string localPath;
int errorno;
int SockID,
SockSer;
SOCKINF SockAddr;
/*
* 内部方法
*/
int RecvMessage(int Sock,char *Message,int Length,char *Check);
void SendCommand(int Sock,char *Command,int Length);
int SendToRemote(int Sock,char *SrcFilePath,char *SrcFileName,char *DesFilePath);
int GetFromRemote(int Sock,char *FileName);
int GetRemoteFileList(int Sock,char *FileList);
void DeleteAD(char *Str);
short GetPortFromBuffer(char *Buffer);
void SafeExit(int Code) ;
public:
/*
*构造函数
*@param pm_sFtpServer 服务器IP地址
*@param pm_iFtpPort 服务器端口号
*/
FTPTools(const string &pm_sFtpServer,int pm_iFtpPort);
/*
*登陆FTP服务器
*@param pm_sFtpUser Ftp帐号
*@param pm_sFtpPwd Ftp密码
*@return 0 成功 -1 失败
*
*/
int login(const string &pm_sFtpUser,const string &pm_sFtpPwd);
/*
*文件目录
*@param pm_sServerPath Ftp服务端目录
*@return 0 成功 returnCode 错误代码
*/
int cd(const string &pm_sServerPath);
/*
*设定本地路径
* @param pm_sLocalPath 本地路径
*/
void Lcd(const string &pm_sLocalPath);
/*
*上传文件
*@param pm_sSrcFileName 本地文件名
*@return 0 成功 returnCode 错误代码
*
*/
int upload(const string &pm_sSrcFileName);
/*
*下载文件
*@param pm_sServerFileName 下载文件名
*@return 0 成功 returnCode 错误代码
*
*/
int download(const string &pm_sServerFileName);
/*
*关闭连接
*/
void bye();
virtual ~FTPTools();
};
#endif /*FTPTOOLS_H_*/