Теперь вопрос
TELNET так и должен работать ? Или есть возможность попросить его собрать строку и отправить целиком?
Дело не в телнете, а в реализации ТСР/IP. Никно не гарантирует, что:
1. вызов send пошлёт весь буфер сразу (так как буфер ОС ограничен)
2. (даже если 1 будет успешно) что весь буфер через сеть будет передаваться одним пакетом
3. принимающая сторона (ОС) получит все переданные пакеты, соберёт их и неё при этом не закончатся приёмные буфера
4. у принимающей стороны вызов recv будет пытаться забрать всё, что есть в прийомном буфере
Поэтому, реализация всегда должна собирать то, что приходит из сокета, до какого-то определённого символа (типа конец строки).