// testTmpMfc.cpp : 定义控制台应用程序的入口点。
#include "stdafx.h"
#include "testTmpMfc.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#include <string>
#include <iostream>
#include <afxinet.h>
#include <windows.h>

// 唯一的应用程序对象
CWinApp theApp;
using namespace std;
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
...{
//Test Ftp
int nRetCode = 0;
// 初始化 MFC 并在失败时显示错误
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
...{
// TODO: 更改错误代码以符合您的需要
_tprintf(_T("致命错误: MFC 初始化失败 "));
nRetCode = 1;
}
else
...{
// TODO: 在此处为应用程序的行为编写代码。
}
string serverIPstr = "10.132.143.161";
string usrNameStr = "movie";
string usrPwStr = "movie";
string portStr = "21";
string serverFile = "/a/a.txt";
string serverPath = "/";
string localFile = "./a/a/a.txt";
CInternetSession session("Update Session");
CFtpConnection* pFtpConnection = NULL;
try
...{
pFtpConnection = session.GetFtpConnection(serverIPstr.c_str(), usrNameStr.c_str(), usrPwStr.c_str(), atoi(portStr.c_str()));
if (pFtpConnection == NULL)
return false;
BOOL b = pFtpConnection->SetCurrentDirectory(serverPath.c_str());
if (b == FALSE)
...{
AfxMessageBox("set current dir error");
return false;
}
//创建目录
CreateDirectory("./a/a/",NULL);
//检查并删除文件
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
hFind = FindFirstFile( localFile.c_str(), &FindFileData );
if (hFind != INVALID_HANDLE_VALUE) 
...{
DeleteFile( localFile.c_str() );
cout << "find such a file" << endl;
FindClose(hFind);
}
b = pFtpConnection->GetFile(serverFile.c_str(), localFile.c_str());
if (b == FALSE)
...{
int error = GetLastError();
CString strError;
strError.Format("download file error: %d", error);
AfxMessageBox(strError);
pFtpConnection->Close();
return false;
}
pFtpConnection->Close();
}catch (CInternetException* pEx)...{
TCHAR sz[1024];
pEx->GetErrorMessage(sz, 1024);
printf("ERROR! %s ", sz);
pEx->Delete();
return false;
}
return nRetCode;
}
本文展示了一个使用MFC实现的FTP客户端示例程序,包括连接FTP服务器、切换目录、下载文件等功能。通过CInternetSession和CFtpConnection类进行操作,并处理了异常情况。

1020

被折叠的 条评论
为什么被折叠?



