#include #include #include #include "ftp.h" void print_help() { printf("Usage:\n\ help\n\ login \n\ download \n\ upload \n\ quit\n"); } int main(int argc, char** argv) { if (argc < 2) { printf("Usage: ftp host [port]\n"); return 0; } const char* host = argv[1]; int port = FTP_COMMAND_PORT; if (argc >= 3) { port = atoi(argv[2]); } int ret = 0; ftp_handle_t hftp; ret = ftp_connect(&hftp, host, port); if (ret != 0) { printf("ftp connect failed!\n"); return ret; } print_help(); char cmd[256] = {0}; char param1[256] = {0}; char param2[256] = {0}; while (1) { printf("> "); scanf("%s", cmd); if (strncmp(cmd, "help", 4) == 0) { print_help(); } else if (strncmp(cmd, "login", 5) == 0) { scanf("%s", param1); scanf("%s", param2); //printf("cmd=%s param1=%s param2=%s\n", cmd, param1, param2); const char* username = param1; const char* password = param2; ret = ftp_login(&hftp, username, password); printf("%s", hftp.recvbuf); if (ret != 0) break; } else if (strncmp(cmd, "upload", 6) == 0) { scanf("%s", param1); scanf("%s", param2); //printf("cmd=%s param1=%s param2=%s\n", cmd, param1, param2); const char* localfile = param1; const char* remotefile = param2; ret = ftp_upload(&hftp, localfile, remotefile); printf("%s", hftp.recvbuf); if (ret != 0) break; } else if (strncmp(cmd, "download", 8) == 0) { scanf("%s", param1); scanf("%s", param2); //printf("cmd=%s param1=%s param2=%s\n", cmd, param1, param2); const char* remotefile = param1; const char* localfile = param2; ret = ftp_download(&hftp, remotefile, localfile); printf("%s", hftp.recvbuf); if (ret != 0) break; } else if (strncmp(cmd, "quit", 4) == 0) { break; } else { scanf("%s", param1); //printf("cmd=%s param=%s\n", cmd, param1); ret = ftp_exec(&hftp, cmd, param1); printf("%s", hftp.recvbuf); } } printf("QUIT\n"); ftp_quit(&hftp); printf("%s", hftp.recvbuf); return 0; }