Вам необходимо отправить какое-то значение, которое указывает, каким будет следующий элемент данных. Например, каждой текстовой строке может предшествовать значение TEXT\n
, а для каждого файла FILE:nnn\n
, где \n
- символ новой строки, а nnn
- размер файла в байтах, поэтому вы знаете, какая часть Поток для чтения, прежде чем ожидать еще один TEXT
или FILE
маркер.
UPDATE
Например, ваш входящий поток может выглядеть так:
TEXT
Hey mate, here's some cool file
FILE:10
1234
56789TEXT
Did you get it ok?
Я предполагаю, что сообщение чата будет только одной строкой текста. Кроме того, файл не должен заканчиваться возвратом строки, потому что число байтов уже известно, 10 в примере выше (включая символ новой строки между 4 и 5). Содержимое файла здесь:
1234
56789