1
0

ftp_test.c 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "ftp.h"
  5. void print_help() {
  6. printf("Usage:\n\
  7. help\n\
  8. login <username> <password>\n\
  9. download <remote_filepath> <local_filepath>\n\
  10. upload <local_filepath> <remote_filepath>\n\
  11. quit\n");
  12. }
  13. int main(int argc, char** argv) {
  14. if (argc < 2) {
  15. printf("Usage: ftp host [port]\n");
  16. return 0;
  17. }
  18. const char* host = argv[1];
  19. int port = FTP_COMMAND_PORT;
  20. if (argc >= 3) {
  21. port = atoi(argv[2]);
  22. }
  23. int ret = 0;
  24. ftp_handle_t hftp;
  25. ret = ftp_connect(&hftp, host, port);
  26. if (ret != 0) {
  27. printf("ftp connect failed!\n");
  28. return ret;
  29. }
  30. print_help();
  31. char cmd[256] = {0};
  32. char param1[256] = {0};
  33. char param2[256] = {0};
  34. while (1) {
  35. printf("> ");
  36. scanf("%s", cmd);
  37. if (strncmp(cmd, "help", 4) == 0) {
  38. print_help();
  39. }
  40. else if (strncmp(cmd, "login", 5) == 0) {
  41. scanf("%s", param1);
  42. scanf("%s", param2);
  43. //printf("cmd=%s param1=%s param2=%s\n", cmd, param1, param2);
  44. const char* username = param1;
  45. const char* password = param2;
  46. ret = ftp_login(&hftp, username, password);
  47. printf("%s", hftp.recvbuf);
  48. if (ret != 0) break;
  49. }
  50. else if (strncmp(cmd, "upload", 6) == 0) {
  51. scanf("%s", param1);
  52. scanf("%s", param2);
  53. //printf("cmd=%s param1=%s param2=%s\n", cmd, param1, param2);
  54. const char* localfile = param1;
  55. const char* remotefile = param2;
  56. ret = ftp_upload(&hftp, localfile, remotefile);
  57. printf("%s", hftp.recvbuf);
  58. if (ret != 0) break;
  59. }
  60. else if (strncmp(cmd, "download", 8) == 0) {
  61. scanf("%s", param1);
  62. scanf("%s", param2);
  63. //printf("cmd=%s param1=%s param2=%s\n", cmd, param1, param2);
  64. const char* remotefile = param1;
  65. const char* localfile = param2;
  66. ret = ftp_download(&hftp, remotefile, localfile);
  67. printf("%s", hftp.recvbuf);
  68. if (ret != 0) break;
  69. }
  70. else if (strncmp(cmd, "quit", 4) == 0) {
  71. break;
  72. }
  73. else {
  74. scanf("%s", param1);
  75. //printf("cmd=%s param=%s\n", cmd, param1);
  76. ret = ftp_exec(&hftp, cmd, param1);
  77. printf("%s", hftp.recvbuf);
  78. }
  79. }
  80. printf("QUIT\n");
  81. ftp_quit(&hftp);
  82. printf("%s", hftp.recvbuf);
  83. return 0;
  84. }