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