А что значит рассинхронизация на хоть 1 байт? Как она может произойти?Недостаток способа: длина + поле указанной длины байт (2-й способ, как вы его назвали) состоит в том, что:
- клиент-серверные системы обычно предназаначены работать долго, на многих миллионах последовательных посылок...
- но если при таком способе вы каким-то образом рассинхронизируетесь хоть на 1 байт с началов ваших сообщений - то вы уже никогда больше не восстановите работу вашей системы без перезагрузки.
Вот клиент посылает одно сообщение с его длиной в начале, сервер получает поток и по первым (к примеру) 4-м байтам этого потока узнает длину сообщения и принимает его целиком.
Затем приходит второе сообщение по тому же принципу, затем третье, ведь все они идут последовательно. Как в этой схеме может произойти "авария?"