X Tutup
#include "TestFtpStack.h" void PrintUsage( const char * pszProgram ) { printf( "[Usage] %s {ftp IP} {user id} {password} upload {remote folder path} {local file path}\n", pszProgram ); printf( " %s {ftp IP} {user id} {password} upload_folder {remote folder path} {local folder path}\n", pszProgram ); printf( " %s {ftp IP} {user id} {password} download {remote folder path} {remote filename} {local file path}\n", pszProgram ); printf( " %s {ftp IP} {user id} {password} get_folder\n", pszProgram ); printf( " %s {ftp IP} {user id} {password} create_folder {remote folder path}\n", pszProgram ); printf( " %s {ftp IP} {user id} {password} delete_folder {remote folder path}\n", pszProgram ); printf( " %s {ftp IP} {user id} {password} list\n", pszProgram ); } int main( int argc, char * argv[] ) { #ifdef WIN32 _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF | _CRTDBG_CHECK_ALWAYS_DF ); #endif if( argc < 5 ) { PrintUsage( argv[0] ); return 0; } const char * pszServerIp = argv[1]; const char * pszUserId = argv[2]; const char * pszPassWord = argv[3]; const char * pszCommand = argv[4]; CFtpClient clsFtp; InitNetwork(); CLog::SetLevel( LOG_DEBUG | LOG_NETWORK ); // FTP ¼­¹ö ¿¬°á ¹× ·Î±×ÀÎ if( clsFtp.Connect( pszServerIp, 21, true ) == false ) { printf( "clsFtp.Connect(%s) error\n", pszServerIp ); return 0; } if( clsFtp.Login( pszUserId, pszPassWord ) == false ) { printf( "login error\n" ); return 0; } if( !strcmp( pszCommand, "upload" ) ) { // FTP ¾÷·Îµå if( argc < 7 ) { PrintUsage( argv[0] ); return 0; } const char * pszRemoteFolder = argv[5]; const char * pszLocalPath = argv[6]; if( clsFtp.ChangeFolder( pszRemoteFolder ) == false ) { printf( "clsFtp.ChangeFolder(%s) error\n", pszRemoteFolder ); return 0; } if( clsFtp.Upload( pszLocalPath ) == false ) { printf( "clsFtp.Upload(%s) error\n", pszLocalPath ); return 0; } } else if( !strcmp( pszCommand, "upload_folder" ) ) { // Æú´õ¿¡ Æ÷ÇÔµÈ ¸ðµç ÆÄÀÏÀ» FTP ¾÷·Îµå if( argc < 7 ) { PrintUsage( argv[0] ); return 0; } const char * pszRemoteFolder = argv[5]; const char * pszLocalFolder = argv[6]; FILE_LIST clsFileList; FILE_LIST::iterator itFL; if( clsFtp.ChangeFolder( pszRemoteFolder ) == false ) { printf( "clsFtp.ChangeFolder(%s) error\n", pszRemoteFolder ); return 0; } CDirectory::FileList( pszLocalFolder, clsFileList ); for( itFL = clsFileList.begin(); itFL != clsFileList.end(); ++itFL ) { std::string strPath = pszLocalFolder; CDirectory::AppendName( strPath, itFL->c_str() ); if( clsFtp.Upload( strPath.c_str() ) == false ) { printf( "clsFtp.Upload(%s) error\n", strPath.c_str() ); break; } } } else if( !strcmp( pszCommand, "download" ) ) { // FTP ´Ù¿î·Îµå if( argc < 8 ) { PrintUsage( argv[0] ); return 0; } const char * pszRemoteFolder = argv[5]; const char * pszRemoteFile = argv[6]; const char * pszLocalPath = argv[7]; if( clsFtp.ChangeFolder( pszRemoteFolder ) == false ) { printf( "clsFtp.ChangeFolder(%s) error\n", pszRemoteFolder ); return 0; } if( clsFtp.Download( pszRemoteFile, pszLocalPath ) == false ) { printf( "clsFtp.Download(%s) error\n", pszRemoteFile ); return 0; } } else if( !strcmp( pszCommand, "get_folder" ) ) { // FTP ÇöÀç Æú´õ °¡Á®¿À±â std::string strPath; if( clsFtp.GetCurrentFolder( strPath ) == false ) { printf( "clsFtp.GetCurrentFolder() error\n" ); return 0; } printf( "current directory[%s]\n", strPath.c_str() ); } else if( !strcmp( pszCommand, "create_folder" ) ) { // FTP Æú´õ »ý¼ºÇϱâ if( argc < 6 ) { PrintUsage( argv[0] ); return 0; } const char * pszRemoteFolder = argv[5]; if( clsFtp.CreateFolder( pszRemoteFolder ) == false ) { printf( "clsFtp.CreateFolder(%s) error\n", pszRemoteFolder ); return 0; } if( clsFtp.ChangeFolder( pszRemoteFolder ) == false ) { printf( "clsFtp.ChangeFolder(%s) error\n", pszRemoteFolder ); return 0; } std::string strPath; if( clsFtp.GetCurrentFolder( strPath ) == false ) { printf( "clsFtp.GetCurrentFolder() error\n" ); return 0; } printf( "current directory[%s]\n", strPath.c_str() ); } else if( !strcmp( pszCommand, "delete_folder" ) ) { // FTP Æú´õ »èÁ¦Çϱâ if( argc < 6 ) { PrintUsage( argv[0] ); return 0; } const char * pszRemoteFolder = argv[5]; if( clsFtp.DeleteFolder( pszRemoteFolder ) == false ) { printf( "clsFtp.DeleteFolder(%s) error\n", pszRemoteFolder ); return 0; } } else if( !strcmp( pszCommand, "list" ) ) { // FTP Æú´õ¿¡ Æ÷ÇÔµÈ ÆÄÀÏ ¸®½ºÆ® Ãâ·ÂÇϱâ FTP_FILE_LIST clsList; FTP_FILE_LIST::iterator itFL; if( clsFtp.List( clsList ) == false ) { printf( "clsFtp.List()\n" ); return 0; } for( itFL = clsList.begin(); itFL != clsList.end(); ++itFL ) { if( itFL->m_bFolder ) { printf( "folder[%s]\n", itFL->m_strFileName.c_str() ); } else { printf( "file[%s]\n", itFL->m_strFileName.c_str() ); } } } return 0; }
X Tutup