From 4b3f4ce7733dabfd8cdf79cfcf808cf46e8cc834 Mon Sep 17 00:00:00 2001 From: ambrumf <421653227@qq.com> Date: Tue, 17 Oct 2023 01:36:06 +0800 Subject: [PATCH] update ftpclient --- .../test_ftpclient_final/test_ftpclient.c | 80 ++++++++++++++++--- 1 file changed, 69 insertions(+), 11 deletions(-) diff --git a/APP_Framework/Applications/app_test/test_ftpclient_final/test_ftpclient.c b/APP_Framework/Applications/app_test/test_ftpclient_final/test_ftpclient.c index 09bad0ed5..619517e48 100644 --- a/APP_Framework/Applications/app_test/test_ftpclient_final/test_ftpclient.c +++ b/APP_Framework/Applications/app_test/test_ftpclient_final/test_ftpclient.c @@ -224,23 +224,81 @@ int Download(char *name) } return 0; } +int Upload(char* name) +{ + int data_fd = socket(AF_INET, SOCK_STREAM, 0); + int len = 5000; + char* buf = malloc(len); + printf("uploading file %s\r\n", name); + int ret; + uint8_t addr[4]; + int port; + ret = EnterPasv(addr, &port); + if (ret == -1) { + closesocket(data_fd); + return -1; + } + tcp_sock.sin_family = AF_INET; + tcp_sock.sin_port = htons(port); + tcp_sock.sin_addr.s_addr = PP_HTONL(LWIP_MAKEU32(addr[0],addr[1],addr[2],addr[3])); + memset(&(tcp_sock.sin_zero), 0, sizeof(tcp_sock.sin_zero)); + ret = connect(data_fd, (struct sockaddr*)&tcp_sock, sizeof(struct sockaddr)); + if(ret == -1){ + printf("fail to connect data port\r\n"); + return -1; + } + sprintf(sendBuffer, "STOR %s\r\n", name); + ret = SendCommand(sendBuffer); + if(ret == -1){ + closesocket(data_fd); + return -1; + } + ret = RecvRespond(recvBuffer,1024); + if(ret!=150){ + closesocket(data_fd); + return -1; + } + FILE* file = fopen(name, "r"); + if (file == NULL) { + printf("failed to open file\n"); + return -1; + } + + int size = fread(buf, 1, sizeof(buf), file); + if (size == -1) { + printf("failed to read data\n"); + return -1; + } + fclose(file); + ret = send(data_fd, buf, len); + closesocket(data_fd); + + ret = RecvRespond(recvBuffer, 1024); + if (ret != 226) { + return -1; + } + return 0; + +} int TestFtp() { lwip_config_tcp(0, tcp_demo_ipaddr, tcp_demo_netmask, tcp_demo_gwaddr); cmd_fd = socket(AF_INET, SOCK_STREAM, 0); uint8_t ip[4] = { 192,168,130,70 }; - Login(ip,21,"frank","114514"); - Download("File0.txt"); - Download("File1.txt"); - Download("File2.txt"); - Download("File3.txt"); - Download("File4.txt"); - Download("File5.txt"); - Download("File6.txt"); - Download("File7.txt"); - Download("File8.txt"); - Download("File9.txt"); + Login(ip, 21, "frank", "114514"); + + Upload("File0.txt"); + // Download("File0.txt"); + // Download("File1.txt"); + // Download("File2.txt"); + // Download("File3.txt"); + // Download("File4.txt"); + // Download("File5.txt"); + // Download("File6.txt"); + // Download("File7.txt"); + // Download("File8.txt"); + // Download("File9.txt"); closesocket(cmd_fd); return 0;