【问题标题】:TcpClient Stream streamReader.ReadToEnd() for Telnet用于 Telnet 的 TcpClient 流 streamReader.ReadToEnd()
【发布时间】:2013-06-17 12:06:57
【问题描述】:

我正在使用 telnet 连接在服务器和设备之间开发双向对话。 我想在发送下一个命令之前等待并获取读取缓冲区。 我试着用这个:

TcpClient tcpClient;
NetworkStream networkStream;
StreamWriter streamWriter;

tcpClient = new TcpClient("10.0.0.51", 23);
networkStream = tcpClient.GetStream();
StreamReader streamReader = new StreamReader(networkStream);
networkStream.ReadTimeout = 500;
while(wline!="exit"){
    Console.Write(streamReader.ReadToEnd());
    Console.Write("next command:");
    wline =Console.ReadLine();
    streamWriter.Write(wline);
}

但 ReadToEnd() 似乎无法正常工作。如果我使用 Read()(单字节),我可以收到一些东西。

【问题讨论】:

    标签: c# sockets telnet


    【解决方案1】:

    ReadToEnd 读取所有内容,直到 结束,在网络流的情况下,当流关闭时会发生这种情况。除非另一端的设备关闭流,否则您的客户端无法知道确实没有更多数据要读取。

    您应该使用ReadLine一次读取和处理一行,或者使用ReadBlock读取块中的数据。

    【讨论】:

      猜你喜欢
      • 2015-05-13
      • 2017-12-01
      • 1970-01-01
      • 2012-09-25
      • 2013-05-26
      • 2018-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多