когда вы имеете дело с потоками TCP, вам обычно приходится буферизовать ваши данные в некоторой форме, если вы используете префикс длины, у вас есть фаза «Длина чтения», когда она читается, вы переключаетесь на «Чтение данных», когда эта длинавыполнено, вы передаете прочитанные байты и переключаетесь обратно на «Длительность чтения» ...
Помните, что вы можете не получать все, что отправляете, за одно чтение, или вы можете получить более одногоотправить за 1 чтение.
Зашифрована ли длина?Может ли быть так, что длина предваряется в незашифрованном виде, а затем полезные данные зашифрованы?... будет сложнее узнать, сколько читать, если вы не знаете, сколько читать, пока не расшифруете данные.
Предложить: 4 байта (есть другой метод) для длины зашифрованногоПолезная нагрузка
Чтение байтов до получения только что прочитанной длины.
(расшифровка полезной нагрузки)
4 байта ...
N байт ...
(Расшифровать)
Повторять при подключенном потоке.
Если у вас есть контроль над концом шифрования.
Функция получает входные байты Шифрование возвращает Encyptedбайты
Отправка зашифрованных байтов Длина (4 байта) Отправка зашифрованных байтов
Повторите для каждого входного блока.