Advertisement
Guest User

Untitled

a guest
Apr 13th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.98 KB | None | 0 0
  1. int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
  2. {
  3.     int nRetCode = 0;
  4.  
  5.     // initialize MFC and print and error on failure
  6.     if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
  7.     {
  8.         // TODO: change error code to suit your needs
  9.         _tprintf(_T("Fatal Error: MFC initialization failed\n"));
  10.         nRetCode = 1;
  11.     }
  12.     else
  13.     {
  14.         // TODO: code your application's behavior here.
  15.  
  16.         // Khoi tao Thu vien
  17.         if (AfxSocketInit() == FALSE)
  18.         {
  19.             cout << "Khong the khoi tao Socket Libraray";
  20.             return FALSE;
  21.         }
  22.  
  23.         // Tao socket dau tien
  24.         CSocket ClientSocket;
  25.         ClientSocket.Create();
  26.  
  27.  
  28.         string strIpAdr = "127.0.0.1";
  29.         CString cstrIpAdr(strIpAdr.c_str());
  30.  
  31.         // Ket noi den Server
  32.         if (ClientSocket.Connect(cstrIpAdr, 21) != 0)
  33.         {
  34.             cout << "connected to " + strIpAdr + "." << endl;
  35.             char buffer[4096];         // Chuỗi để lưu dữ nhận từ sever, hoặc client.
  36.             string code = "";
  37.             string strUser = "doanmmt";
  38.             string strPass = "123";
  39.             string strRequest = "";
  40.             int flag = 0;
  41.  
  42.             do
  43.             {
  44.                 // Nhan thong diep tu Server
  45.                 memset(buffer, 0, 4096);
  46.                 ClientSocket.Receive(buffer, 4096);
  47.  
  48.                 int i = 0;
  49.                 code = "";
  50.                 for (i = 0; i < 3; i++)
  51.                 {
  52.                     code += buffer[i];
  53.                 }
  54.  
  55.                 // Nếu là mã yêu cầu là nhập User.
  56.                 if (code == "220")
  57.                 {
  58.                     char user[4096];
  59.  
  60.                     cout << buffer;
  61.                     cout << "User (" + strIpAdr + ":(none)): ";
  62.                     memset(user, 0, 4096);
  63.                     fgets(user, 4096, stdin);
  64.  
  65.                     memset(buffer, 0, 4096);
  66.                     buffer[0] = 'u';
  67.                     buffer[1] = 's';
  68.                     buffer[2] = 'e';
  69.                     buffer[3] = 'r';
  70.                     buffer[4] = ' ';
  71.  
  72.                     int i = 0;
  73.                     for (i = 0; i < strlen(user); i++)
  74.                     {
  75.                         buffer[5 + i] = user[i];
  76.                     }
  77.  
  78.                     ClientSocket.Send(buffer, strlen(buffer) + 1, 0);
  79.  
  80.                 }
  81.                 else if (code == "331")
  82.                 {
  83.                     char pass[4096];
  84.  
  85.                     cout << buffer;
  86.                     cout << "Password: ";
  87.                     memset(pass, 0, 4096);
  88.                     fgets(pass, 4096, stdin);
  89.  
  90.                     memset(buffer, 0, 4096);
  91.                     buffer[0] = 'p';
  92.                     buffer[1] = 'a';
  93.                     buffer[2] = 's';
  94.                     buffer[3] = 's';
  95.                     buffer[4] = ' ';
  96.  
  97.                     int i = 0;
  98.                     for (i = 0; i < strlen(pass); i++)
  99.                     {
  100.                         buffer[5 + i] = pass[i];
  101.                     }
  102.  
  103.                     ClientSocket.Send(buffer, strlen(buffer) + 1, 0);
  104.  
  105.                 }
  106.                 else if (code == "230")
  107.                 {
  108.                     cout << buffer;
  109.                     flag = 1;
  110.                 }
  111.                 else if (code == "200")
  112.                 {
  113.                     cout << buffer;
  114.  
  115.                     if (strRequest == "dir")
  116.                     {
  117.                         memset(buffer, 0, 4096);
  118.                         fgets(buffer, 4096, stdin);
  119.  
  120.                         ClientSocket.Send(buffer, strlen(buffer) + 1, 0);
  121.                     }
  122.  
  123.                 }
  124.                 else if (code == "150")
  125.                 {
  126.                     cout << buffer;
  127.                 }
  128.  
  129.  
  130.                 if (flag == 1)
  131.                 {
  132.                     cout << "ftp> ";
  133.                     cin >> strRequest;;
  134.                     cin.ignore();
  135.  
  136.                     if (strRequest == "dir")
  137.                     {
  138.                         CSocket ClientSocket1;
  139.                         ClientSocket1.Create();
  140.                         UINT clientPort = 0;
  141.  
  142.                         if (!ClientSocket1.Connect(cstrIpAdr, 21))
  143.                         {
  144.                             cout << "Khong the tao data channel\n";
  145.                             return -1;
  146.                         }
  147.                         else
  148.                         {
  149.                             cout << "Tao socket thu 2 thanh cong\n";
  150.                             if (!ClientSocket1.GetPeerName(cstrIpAdr, clientPort))
  151.                             {
  152.                                 cout << "Khong the xac dinh port\n";
  153.                                 return -1;
  154.                             }
  155.                             char buffer[4096];
  156.                             memset(buffer, 0, 4096);
  157.                             sprintf(buffer, "PORT %d,%d,%d,%d,%d,%d\n", 127, 0, 0, 1, clientPort / 256, clientPort % 256);
  158.                             ClientSocket.Send(buffer, strlen(buffer));
  159.                             cout << "Gui port thanh cong\n";
  160.                         }
  161.                        
  162.                         /*if (ClientSocket1.Connect(cstrIpAdr, 20) != 0)
  163.                         {
  164.                             char port[4096];
  165.  
  166.                             memset(port, 0, 4096);
  167.                             fgets(port, 4096, stdin);
  168.  
  169.                             ClientSocket.Send(port, strlen(port) + 1, 0);
  170.                         }
  171.                         else
  172.                         {
  173.                             cout << "Khong the ket noi den Server !!!" << endl;
  174.                         }*/
  175.                     }
  176.  
  177.                 }
  178.             } while (1);
  179.         }
  180.         else
  181.         {
  182.             cout << "Khong the ket noi den Server !!!" << endl;
  183.         }
  184.  
  185.         // Dong ket noi
  186.         ClientSocket.Close();
  187.     }
  188.  
  189.     return nRetCode;
  190. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement