Это выглядит нормально, так как это не будет производить такого большого количества вывода, но вы должны действительно читать и писать в отдельных потоках, чтобы он не заполнял буфер и не блокировал ожидание чтения перед тем, как перейти к следующему шагу.
Так что, если доходит до того, что вы сбрасываете отправляемую ему команду, выясните, поддерживает ли клиент Windows telnet получение команд из стандартного ввода, а не из консоли, передавая текст, который вы отправляете, в его стандартныйвведите его в командной строке.
Например, echo dir c:\ | cmd
вызывает запуск cmd, выводит на экран содержимое диска c: и завершает работу, почти так же, как если бы вы ввели dir c:\
в консоль.Но echo open localhost | telnet
заставляет telnet очистить экран и затем выйти, а не вести себя так же, как если бы вы вводили его в консоль.Поскольку telnet нужно маскировать пользовательский ввод для паролей, вполне вероятно, что он использует консольный API вместо чтения из стандартного ввода.Это help не перечисляет никаких командных аргументов, чтобы указывать, что они читаются из стандартного ввода, поэтому, возможно, вам нужно использовать реализацию telnet, которая лучше подходит для сценариев.