Я пытаюсь, чтобы Java-сервер и клиенты C ++ общались по TCP при следующих условиях: текстовый режим и двоичный / зашифрованный режим. Моя проблема связана с индикатором eof для конца потока, который чтение DataInputStream (byte []) использует для возврата с -1. Если я отправляю двоичные данные, что должно предотвратить случайную последовательность байтов, представляющую eof и ложно указывающую read (), что поток заканчивается? Кажется, я ограничен текстовым режимом. Я могу жить с этим до тех пор, пока мне не понадобится масштабирование, но тогда у меня проблема в том, что я собираюсь зашифровать текст и добавить аутентификацию сообщения. Даже если бы я отправлял из другой Java-программы, а не из C ++, шифрование строки с помощью AES + MAC привело бы к двоичному выводу, а не к обычной строке. Что помешает какой-то зашифрованной последовательности, содержащей часть, идентичную eof?
Итак, какие здесь решения?