gpt4 book ai didi

c - 使用 fread 读取图像会在缓冲区中添加\0

转载 作者:行者123 更新时间:2023-11-30 14:50:37 27 4
gpt4 key购买 nike

我有一个 HTTP 客户端和一个服务器,客户端向服务器发送文件,服务器将文件发送回客户端。

我向服务器发送文件没有问题,但是当服务器发回需要分多份发送的大文件(例如图像)时,每次我 fread 到缓冲区时, buffer 在某处接收到 \0,因此客户端收到损坏的文件。

这是将文件发送回客户端的代码

            FILE* readFile = fopen(fileName, "rb");
char buf[BUFFLEN];
size_t readlen = 1;

while (readlen != 0)
{
readlen = fread(buf, sizeof(char), BUFFLEN, readFile);
write(socket, buf, readlen);
}

我错过了什么?这适用于小文本文件。

最佳答案

问题已解决:

其中一个答案让我意识到自己的错误。 \0 不是错误的字符。问题出在我的客户接收图像的方式上。每次客户端收到缓冲区时,它都会检查收到的 strlen,但是当遇到 \0 时,strlen(buffer) 会停止。因此,我将从 strlen(buffer) 写入的字节数更改为客户端在套接字上读取的实际字节数。

感谢 Iharob Al Asimi 的评论以及大家的帮助。

关于c - 使用 fread 读取图像会在缓冲区中添加\0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48931646/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com