Я пытаюсь создать простой HTTP-сервер, чтобы узнать больше о том, как он работает. У меня проблемы с отправкой двоичных файлов клиенту. Мой код, как показано ниже:
char * buffer = (char *)malloc(sizeof(char) * 512);
fseek(content_file, 0, SEEK_SET);
while (!feof(content_file)) {
size_t read = fread(buffer, sizeof(char), sizeof(buffer), content_file);
if (read > 0) {
client->send((const void *)buffer);
}
}
fclose(content_file);
free(buffer);
Теперь я знаю, что он может посылать некоторые ненужные данные после последнего чтения блока, но прежде чем пытаться это исправить, я хочу узнать, что с ним не так. Это работало нормально для текстовых файлов, и я использовал fgets. Но после переключения на fread для поддержки двоичных файлов текстовые файлы повреждаются и становятся примерно такими: ThisÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
(«Это» - единственная правильная часть в отправляемых данных)
Очевидно, я что-то упустил, но не могли бы вы помочь мне сделать это правильно?
Edit:
Использование значения buffer_size
вместо sizeof(buffer)
решило проблему отсутствия / повреждения данных.