Всегда ответ надо читать по 1 байту и сразу анализировать. Ожидать что пришли все байты и только нужное количество байт нельзя.
А реализация какова? Читать по байту за цикл, это не серьёзно. Перебором через WHILE, можно нарваться на "злую собаку". Пошагово, как предлагает создатель темы, зачем писать "портянку" когда есть WHILE.