Здравствуйте, Marty, Вы писали:
AG>>P.S. Проблему удалось решить — за счет контроля длины блоков. AG>>Предыдущее решение — за счёт маркёра конца — не такое изящное и (по совету уважаемого товарища Pzz) я отказался от него.
M>Маркер конца — вообще какая-то малоосмысленная штука.
Есть много примеров неплохой практики для такого маркера.
SMTP, POP3, NNTP и прочие: маркер конца — строка из одной точки.
HTTP chunked encoding: маркер конца — чанк длины 0.
ATM: AAL5 для транспорта IP — бит пометки "последний фрагмент IP пакета" (если позанудствовать, тоже, вероятно, фрагмента, но уже на уровне IP).
Да даже просто текстовый интерфейс с другой стороной: маркер конца — LF или CRLF, начало предполагается автоматически (пришёл на линк и послал AT\n).
А пока он не пришёл — набираешь данные. Да, заранее тут не предскажут их длину, надо иметь свой лимит и возможность запасти до него.
И это не противоречит возможности продублировать длиной в конце (для сверки) или CRC.