gpt4 book ai didi

C 套接字 : Exit client after all data is received

转载 作者:行者123 更新时间:2023-12-02 01:36:54 25 4
gpt4 key购买 nike

我是一个学习sockets的C新手。我编写了一个客户端-服务器程序来接收一个文件并将其写入另一个文件。

程序本身运行良好——文件被服务器正确读取并且客户端完整地接收到它,但是客户端在接收到所有数据后并没有退出。

客户端如何知道整个文件何时收到以及我如何让它退出?以下是我的客户片段。

注意:我添加了条件 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);

最佳答案

您的服务器应该在发送完整个文件内容后关闭套接字。这会导致您的recv 函数返回 并结束客户端的接收循环。

如果出于某种原因你想保持连接,那么你需要先向客户端发送一些额外的信息(例如文件长度)——这样客户端就知道一个文件何时结束以及(可能)另一个文件开始。不过,我不确定您是否对此感兴趣。

关于C 套接字 : Exit client after all data is received,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30698772/

25 4 0
文章推荐: r - 计算csv文件中每个字段的最大长度
文章推荐: java - 如何在 java 中将 UnmodifyingRandomAccessList 设置为 Set