从StreamReader读取没有到达终端-使用Telnet协议
本文关键字:终端 使用 Telnet 协议 StreamReader 读取 | 更新日期: 2023-09-27 17:52:38
我使用Telnet协议是为了查询UNIX服务器并获得一些命令的输出。我正在使用代码项目中的极简telnet,我做了一个轻微的修改,以允许读取输出到流的末尾:
public void WriteCommand(string cmd)
{
using (NetworkStream stream = tcpSocket.GetStream())
{
using (StreamWriter writer = new StreamWriter(stream))
{
writer.AutoFlush = true;
using (StreamReader reader = new StreamReader(stream))
{
string message = cmd;
writer.WriteLine(message);
writer.Flush();
while (!reader.EndOfStream)
{
string response = reader.ReadLine();
Console.WriteLine(response);
}
}
}
}
}
问题是,当我运行这个方法时,它应该返回输出直到结束,它被阻塞,因为它不识别流的结束,所以条件reader.EndOfStream()
永远不会达到。
当@itsme86写入时,连接保持打开状态。您是否期望从正在发送的命令中得到任何响应?如果为真,则读取响应,解析它,找到一些分隔符或其他结束符号,这些符号将标记命令已成功执行,并中断while()。