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

时间:2014-03-24 15:48:31

标签: c# telnet

我使用Telnet协议来查询UNIX服务器并获取某些命令的输出。我正在使用Minimalistic telnet from code project并进行了一些修改,以便将输出读取到流的末尾:

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()

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

1 个答案:

答案 0 :(得分:1)

由于@ itsme86写道连接仍然打开。您是否期望发送命令的任何响应?如果为true,则读取响应,解析它,找到一些分隔符或其他完成符号,它将标记该命令已成功执行并在()时断开。