Антон Барышев, по тому что в буфере сокета может и не быть столько данных, сколько ты запросил)
Это нормальное поведение. Если бы он вёл себя так, как вы думаете, то не нужно было бы возвращать количество прочитанных байт
Капец портянка текста.
А вообще не вижу никакой реальной проблемы в использовании bindgen - всё равно, всё что реально не используется будет выкинуто линковщиком.
Антон Барышев, нет. Просто продолжать читать поток, пока не получишь весь заголовок.
Когда делал свой клиент для одного протокола - попробовал использовать для этого System.IO.Pipelines - их архитектура оказалась очень удобной для этого