Я делаю супер простой ftp-сервер для класса в C ++, клиент: чтение из файла и запись в сокет.Сервер: чтение из сокета и запись в файл.Я закончил все сети, и все работает, но ofstream.write ведет себя очень странно: он не записывает последний пакет размером менее 1024 байт.
Я попытался изменить последний размер буфера, чтобы онбудет число прочитанных байтов, я попытался просмотреть флаги ошибок, но ни один из них не произошел, но ничего не было написано, я попытался записать 1024 байта, я пишу, но в конце есть мусор (^ @ chars).
private:
ofstream &out_stream;
for (;;)
{
nread = recvfrom(sfd, buf, 1024, 0, (struct sockaddr *)&peer_addr, &peer_addr_len);
out_stream.write(buf, nread);
if (nread < 1024)
break;
}
Записанный файл должен содержать 1687 байтов, но содержит только 1024 байта, а если я попытаюсь out_stream.write(buf, 1024);
, он содержит 2048 байтов.Я проверил, что программы идут дважды в цикле, как и должно, поэтому условие не является проблемой.