您的位置:首页 > 编程语言 > C语言/C++

从FTP下载文件(C++,Win32)

2006-12-03 21:35 302 查看
 


// 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;


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息