【发布时间】:2015-06-07 21:47:44
【问题描述】:
我是一个学习sockets的C新手。我编写了一个客户端-服务器程序来接收一个文件并将其写入另一个文件。
程序本身工作正常-服务器正确读取文件并且客户端完整接收它,但是客户端在接收到所有数据后没有退出。
客户端如何知道何时收到整个文件以及如何使其退出?以下是我的客户 sn-p。
注意:我添加了条件while (data > 0) 作为此尝试的一部分。如有错误请指正。
#define BUFFER 2048
char recived_data[BUFFER];
bzero(recived_data, BUFFER);
FILE *new_file = fopen(“Test.jpg”, “w”);
int data;
do {
data = recv(sockfd, recived_data, BUFFER, 0);
fwrite(recived_data, 1, sizeof(recived_data), new_file);
} while (data > 0);
【问题讨论】:
-
您可以在实际文件数据之前准备一个标题,它会告诉您数据部分有多大,例如
struct file_t { size_t size; char* data };。