Я собираюсь написать протокол сообщения, проходящий через поток TCP. Получатель должен знать, где находятся границы сообщения.
Я могу отправить 1) сообщения фиксированной длины, 2) поля размера, чтобы получатель знал, насколько велико сообщение, или 3) уникальный терминатор сообщения (я полагаю, его нельзя использовать где-либо еще в сообщении).
Я не буду использовать № 1 по соображениям эффективности.
Мне нравится # 2, но возможно ли, чтобы поток вышел из синхронизации?
Мне не нравится идея № 3, потому что она означает, что получатель не может заранее знать размер сообщения, а также требует, чтобы терминатор не появлялся в другом месте сообщения.
В # 2, если возможно выйти из синхронизации, могу ли я добавить терминатор или я гарантированно никогда не выйду из синхронизации, если программа отправителя верна в том, что она отправляет? Нужно ли делать # 2 И # 3?
Пожалуйста, дайте мне знать.
Спасибо,
JBU