📄 mytask.cpp
字号:
// MyTask.cpp: implementation of the CMyTask class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "FtpServer.h"
#include "MyTask.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMyTask::CMyTask()
{
m_SurveillantPath = "";
m_FtpServer = "";
m_FtpUserName = "";
m_FtpUserPsw = "";
m_UploadRename = FALSE;
m_UploadDelete = FALSE;
m_IntervalMinute = 0;
m_NowStep = 0;
m_RemoteFilePath = "";
m_IntervalHour = 0;
m_starthour = 0;
m_endhour = 0;
memset(&m_TstartDate, 0, sizeof(m_TstartDate));
memset(&m_TendDate, 0, sizeof(m_TendDate));
m_AlreadyStart = FALSE;
}
CMyTask::~CMyTask()
{
}
//查看文件是否存在
BOOL CMyTask::CheckFileExist(CString szFilePathName)
{
CFileFind find;
BOOL ret = find.FindFile(szFilePathName);
find.Close();
return ret;
}
//文件改名
BOOL CMyTask::RenameFile(CString szFilePathName,CString szNewFileName)
{
if(!rename(szFilePathName,szNewFileName))
return TRUE;
else
return FALSE;
}
//删除文件
BOOL CMyTask::DeleteFiles(CString szFilePathName)
{
CString szPathname=szFilePathName;
BOOL RET=DeleteFile(szPathname);
return RET;
}
//上传操作
BOOL CMyTask::UpLoad()
{
int icount=0;
m_Log.PrintMsg("***==================================***");
char szLog[1024]={0};
sprintf(szLog,"开始FTP传送:目的地:%s",m_FtpServer.GetBuffer(0));
m_Log.PrintMsg(szLog);
m_hFtp = NULL;
m_hFtp=m_FtpClient.ftpConnect(m_FtpServer,m_FtpUserName,m_FtpUserPsw);
if (m_hFtp)
{
if ( !m_FtpClient.ftpSetCurrentDirectory(m_hFtp,m_RemoteFilePath))
{
sprintf(szLog,"用户(%s)无权进行写操作。",m_FtpUserName.GetBuffer(0));
m_Log.PrintMsg(szLog,ERRORMSG);
}
else
{
sprintf(szLog,"用户(%s)登陆FTP服务器%s成功!。",m_FtpUserName.GetBuffer(0),m_FtpServer.GetBuffer(0));
m_Log.PrintMsg(szLog);
}
}
else
{
sprintf(szLog,"连接FTP服务器(%s)失败!",m_FtpServer.GetBuffer(0));
m_Log.PrintMsg(szLog,ERRORMSG);
while (icount >= 5)
{
//重连
Sleep(1000*60*2);
sprintf(szLog,"正在重新连接FTP服务器%s",m_FtpServer.GetBuffer(0));
m_Log.PrintMsg(szLog);
m_hFtp=m_FtpClient.ftpConnect(m_FtpServer,m_FtpUserName,m_FtpUserPsw);
if (m_hFtp)
{
if ( !m_FtpClient.ftpSetCurrentDirectory(m_hFtp,m_RemoteFilePath))
{
sprintf(szLog,"用户(%s)无权进行写操作。",m_FtpUserName.GetBuffer(0));
m_Log.PrintMsg(szLog,ERRORMSG);
}else
{
sprintf(szLog,"用户(%s)登陆FTP服务器%s成功!。",m_FtpUserName.GetBuffer(0),m_FtpServer.GetBuffer(0));
m_Log.PrintMsg(szLog);
break;
}
}
icount++;
}
}
FtpProc();
return TRUE;
}
BOOL CMyTask::FtpProc()
{
if(!m_hFtp)
m_hFtp=m_FtpClient.ftpConnect(m_FtpServer,m_FtpUserName,m_FtpUserPsw);
if(!m_hFtp)
{
m_Log.PrintMsg("FTP连接失败,重新连接",WARNMSG);
return false;
}
PutFile();
//可能是以为连接句柄没有释放,所以有时候会出现通道阻塞(040524)
InternetCloseHandle(m_hFtp);
m_hFtp = NULL;
return 0;
}
BOOL CMyTask::PutFile()
{
char szSuc[512];
char szRemoteFilePath[512];
sprintf(szRemoteFilePath,"%s/",m_RemoteFilePath.GetBuffer(0));
char szFileName[512],szFilePath[512];
SYSTEMTIME stime;
GetLocalTime(&stime);
sprintf(szFilePath,m_SurveillantPath);
char path_buffer[1024];
char drive[1024];
char dir[1024];
char fname[1024];
char ext[1024];
strcpy(path_buffer,m_SurveillantPath);
_splitpath( path_buffer, drive, dir, fname, ext);
sprintf(szFileName,"%s%s",fname,ext);
char szTMPRemoteFileName[100];
sprintf(szTMPRemoteFileName,"TMP%04d-%02d-%02d %02d:%02d:%02d.%03d_%s",stime.wYear,stime.wMonth,stime.wDay,stime.wHour,stime.wMinute,stime.wSecond,stime.wMilliseconds,szFileName);
if(m_hFtp)
m_FtpClient.ftpSetCurrentDirectory(m_hFtp,szRemoteFilePath);
if(m_FtpClient.ftpPutFile(m_hFtp,szTMPRemoteFileName,szFilePath))
{
::FtpRenameFile(m_hFtp,szTMPRemoteFileName,szFileName);
char szTmp[1024];
sprintf(szTmp,"%04d-%02d-%02d %02d:%02d:%02d.%03d",stime.wYear,stime.wMonth,stime.wDay,stime.wHour,stime.wMinute,stime.wSecond,stime.wMilliseconds);
sprintf(szSuc,"上传文件[%s]成功! [最后纪录时间:%s]",szFileName,szTmp);
m_Log.PrintMsg(szSuc);
//改名或删除
if (m_UploadDelete)
{
if (DeleteFiles(m_SurveillantPath))
{
sprintf(szSuc,"上传文件[%s]删除成功! ",szFileName);
m_Log.PrintMsg(szSuc);
}
else
{
sprintf(szSuc,"上传文件[%s]删除失败! ",szFileName);
m_Log.PrintMsg(szSuc,ERRORMSG);
}
}
if (m_UploadRename)
{
//生成名字
CString szDesname;
CString szTempname;
SYSTEMTIME stime;
GetLocalTime(&stime);
szDesname.Format("%s%s%s_%04d%02d%02d%02d%02d%02d%s",drive,dir,fname,stime.wYear,stime.wMonth,stime.wDay,stime.wHour,stime.wMinute,stime.wSecond,ext);
szTempname.Format("%s_%04d%02d%02d%02d%02d%02d%s",fname,stime.wYear,stime.wMonth,stime.wDay,stime.wHour,stime.wMinute,stime.wSecond,ext);
if (RenameFile(m_SurveillantPath,szDesname))
{
sprintf(szSuc,"上传文件[%s]改名为[%s]成功! ",szFileName,szTempname);
m_Log.PrintMsg(szSuc);
}
else
{
sprintf(szSuc,"上传文件[%s]改名为[%s]失败! ",szFileName,szTempname);
m_Log.PrintMsg(szSuc,ERRORMSG);
}
}
}else
{
char szSuc[512];
sprintf(szSuc,"上传文件[%s]失败!",szFileName);
m_Log.PrintMsg(szSuc,ERRORMSG);
InternetCloseHandle(m_hFtp);
m_hFtp = NULL;
Sleep(3000);
}
m_Log.PrintMsg("***==================================***");
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -