从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()永远不会达到。

你能告诉我我的代码有什么问题吗?

从StreamReader读取没有到达终端-使用Telnet协议

当@itsme86写入时,连接保持打开状态。您是否期望从正在发送的命令中得到任何响应?如果为真,则读取响应,解析它,找到一些分隔符或其他结束符号,这些符号将标记命令已成功执行,并中断while()。