From 5380f2420bcfe466654c212b922c7ee7bdc35c22 Mon Sep 17 00:00:00 2001 From: fumiama Date: Mon, 3 May 2021 00:52:18 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=8A=E4=BC=A0=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E6=BC=8F=E6=B4=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server.c | 29 ++++++++++------------------- 1 file changed, 10 insertions(+), 19 deletions(-) diff --git a/server.c b/server.c index ceeaeeb..c142fde 100644 --- a/server.c +++ b/server.c @@ -210,38 +210,29 @@ int s3_setData(THREADTIMER *timer) { } } if(file_size <= BUFSIZ - (is_first_data?0:sizeof(uint32_t))) { + while(timer->numbytes != file_size - (is_first_data?0:sizeof(uint32_t))) { + timer->numbytes += recv(timer->accept_fd, timer->data + timer->numbytes + (is_first_data?0:sizeof(uint32_t)), BUFSIZ - timer->numbytes - (is_first_data?0:sizeof(uint32_t)), 0); + } if(fwrite(timer->data + (is_first_data?0:sizeof(uint32_t)), file_size, 1, timer->fp) != 1) { puts("Set data error."); return closeFileAndSend(timer, "erro", 4); } else return closeFileAndSend(timer, "succ", 4); } else { - if(fwrite(timer->data + (is_first_data?0:sizeof(uint32_t)), BUFSIZ - (is_first_data?0:sizeof(uint32_t)), 1, timer->fp) != 1) { + if(fwrite(timer->data + (is_first_data?0:sizeof(uint32_t)), timer->numbytes - (is_first_data?0:sizeof(uint32_t)), 1, timer->fp) != 1) { puts("Set data error."); return closeFileAndSend(timer, "erro", 4); } int32_t remain = file_size - BUFSIZ; - while(remain / BUFSIZ > 0) { + while(remain > 0) { printf("remain:%d\n", remain); timer->numbytes = recv(timer->accept_fd, timer->data, BUFSIZ, 0); - if(timer->numbytes == BUFSIZ) { - if(fwrite(timer->data, BUFSIZ, 1, timer->fp) != 1) { - puts("Set data error."); - return closeFileAndSend(timer, "erro", 4); - } - remain -= BUFSIZ; - } else return closeFileAndSend(timer, "erro", 4); - } - if(remain > 0) { - printf("remain:%d\n", remain); - timer->numbytes = recv(timer->accept_fd, timer->data, remain, 0); - printf("Get data size: %tu\n", timer->numbytes); - if(timer->numbytes == remain) { - if(fwrite(timer->data, remain, 1, timer->fp) != 1) { - puts("Set data error."); - return closeFileAndSend(timer, "erro", 4); - } else return closeFileAndSend(timer, "succ", 4); + if(fwrite(timer->data, timer->numbytes, 1, timer->fp) != 1) { + puts("Set data error."); + return closeFileAndSend(timer, "erro", 4); } + remain -= timer->numbytes; } + return closeFileAndSend(timer, "succ", 4); } return closeFileAndSend(timer, "erro", 4); }