2013-06-20 68 views
1

我開發一個服務器和使用telnet連接的設備之間的雙向對話。 我想等待發送下一個命令之前得到讀緩衝區。 我tryed使用此:的TcpClient流streamReader.ReadToEnd()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()(單字節),我可以收到一些東西。

回答

2

ReadToEnd會讀取所有內容,直到數據流結束,在網絡流的情況下,該數據流將在該流關閉時發生。除非另一端的設備關閉了流,否則您的客戶無法知道確實沒有更多數據要讀取。

您應該使用的ReadLine讀取和處理在一次一行,或者使用讀出數據塊以塊讀取數據。