0
我在C#創建這個小客戶端套接字:從插座接收,直到在C#中特定行
TcpClient socket = new TcpClient(this.ip, this.port);
NetworkStream stream = socket.GetStream();
StreamReader input = new StreamReader(stream);
StreamWriter output = new StreamWriter(stream);
output.WriteLine(request);
output.Flush();
String result = "";
String line = "";
while (line != "GO")
{
line = input.ReadLine().Trim();
result += line + "\n";
}
socket.Close();
return result;
它連接得很好,但它保持停留在while循環,它只會收到第一線服務器套接字發送,所以從不接收「GO」。我在這裏做錯了什麼?
你可以提供關於服務器端代碼的更多細節嗎?另外,另外,'input.ReadLine()。Trim()'在這裏很危險,因爲如果流被耗盡,'ReadLine()'返回'null'。如果服務器在不發送「GO」行的情況下關閉連接,則客戶端應用程序將會死亡。 – 2011-05-23 18:08:24
你確定沒有收到「GO」嗎?如果您發送帶有其他數據而沒有換行符的「GO」,那麼在ReadLine()調用期間您將讀取的不僅僅是「GO」,並且「行」不等於「GO」,這可以解釋爲什麼您不能退出循環。 – alexD 2011-05-23 18:10:14