У меня есть сервер, который отправляет файл через соединение сокета моему клиенту. Отправленное сообщение представляет собой структуру, содержащую длину полезной нагрузки и собственно полезную нагрузку.C++ recv socket с меньшим буфером
Проблема заключается в том, что в случае, если полезная нагрузка имеет 270 байт, а мой буфер имеет только 256, когда я вызываю прием снова и добавляю полезную нагрузку строгого, полученного на первом приеме, с тем, что я получил во второй, выходной файл получает некоторые случайные данные между ними.
Например, я посылаю «быстрый коричневый лиса прыгает через ленивую собаку» и буфер заканчивается на «над» он будет записывать в файл: «быстрая коричневая лиса перепрыгивает% & $ & # 57f- 6 $ + ленивая собака "
Вы добавляете с помощью 'strcat()'? ** Не надо! ** read() и recv() не дают строк с нулевым завершением. Вместо этого пусть ваша программа запоминает размеры двух кусков. – wildplasser
Покажите нам код. –