From 1f57b5e6b829e7476b18a3e62f9a9263112b5782 Mon Sep 17 00:00:00 2001 From: ambrumf <421653227@qq.com> Date: Tue, 17 Oct 2023 01:25:16 +0800 Subject: [PATCH] update ftpserver --- .../app_test/test_ftpclient_final/ftpserver.c | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/APP_Framework/Applications/app_test/test_ftpclient_final/ftpserver.c b/APP_Framework/Applications/app_test/test_ftpclient_final/ftpserver.c index b9c895159..eebaf62d1 100644 --- a/APP_Framework/Applications/app_test/test_ftpclient_final/ftpserver.c +++ b/APP_Framework/Applications/app_test/test_ftpclient_final/ftpserver.c @@ -65,10 +65,7 @@ int CheckPassword(int it) { } return 0; } -void StartDataConnection(int data_fd,struct sockaddr_in client_addr) -{ -} void *CreateDataSockt(void *arg) { int *data = arg; @@ -102,7 +99,6 @@ void *CreateDataSockt(void *arg) { fd_map[cmd_fd] = data_fd; - StartDataConnection(data_fd, client_addr); } close(fd); @@ -113,6 +109,7 @@ char* GetRespond(char* buf, int it,int *ret,int cmd_fd) { char * cmd = malloc(100); char * data = malloc(100); char* respond = malloc(100); + //debug printf("%s\n", buf); sscanf(buf, "%s %s", cmd, data); if(strcmp(cmd,"USER")==0){ @@ -157,18 +154,20 @@ char* GetRespond(char* buf, int it,int *ret,int cmd_fd) { sprintf(respond, "550 failed to open file\n"); } - fseek(file, 0, SEEK_END); - long file_size = ftell(file); - fseek(file, 0, SEEK_SET); + long file_size = 5000; + char* start = "150 starting data transfer\n"; + write(cmd_fd, start, strlen(start)); char* buff = (char*)malloc(file_size); - fread(buf, 1, file_size, file); + fread(buff, 1, file_size, file); int size = write(fd_map[cmd_fd], buff, strlen(buff)); if (size < 0) { printf("failed to send message\n"); } - + char* end = "226 Operation successfull"; + write(cmd_fd, end, strlen(end)); + fclose(file); free(buff); free(dir); @@ -180,13 +179,16 @@ char* GetRespond(char* buf, int it,int *ret,int cmd_fd) { if (file == NULL) { sprintf(respond, "550 failed to open file\n"); } - + char* start = "150 starting data transfer\n"; + write(cmd_fd, start, strlen(start)); char* buff = (char*)malloc(5000); int size = read(fd_map[cmd_fd], buff, 5000); while (size < 0) { size = read(fd_map[cmd_fd], buff, 5000); } + char* end = "226 Operation successfull"; + write(cmd_fd, end, strlen(end)); fwrite(buff, 1, strlen(buff), file); fclose(file); @@ -197,6 +199,9 @@ char* GetRespond(char* buf, int it,int *ret,int cmd_fd) { sprintf(respond, "221 connection close"); *ret = 221; } + else if (strcmp(cmd, "TYPE") == 0) { + sprintf(respond, "200 Type set to I"); + } else { respond = "500 syntax error\n"; }