1

我使用 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() (单字节),我可以收到一些东西。

4

1 回答 1

4

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

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

于 2013-06-20T15:53:04.717 回答