我在Client和Server之间创建了非常简单的TCP / IP通信程序。目的只是在它们之间交换一些字符串。
Client Server端需要向Server发送和接收一些简单的字符串。
问题是,当我使用StreamWriter将数据发送到Sever时,它可以正常工作。但是,当我启用StreamReader时,while循环只是永远挂起。 “Console.Write(”>“);” line仅在开头执行一次,但在第二次从未再次提示。
以下是代码。
注意“_client”已经连接了TcpClient的套接字,在另一部分代码中声明为TcpClient _client。
_sReader = new StreamReader(_client.GetStream(), Encoding.ASCII);
_sWriter = new StreamWriter(_client.GetStream(), Encoding.ASCII);
_isConnected = true;
String sData = null;
while (_isConnected)
{
Console.Write("> ");
sData = Console.ReadLine();
_sWriter.WriteLine(sData);
_sWriter.Flush();
//If I commnet out these two lines of code below, then there is no problem. Program works fine.
String sDataIncomming = _sReader.ReadLine();
Console.WriteLine(sDataIncomming);
//While loop just hanging after this line.
//It does not even break the while loop.
//Either while loop goes back to the top of the line.
//Just stuck here. Why ?
}
如果我注释掉StreamReader的两行代码,程序将再次完美。
如何解决此问题?分享您的知识将非常感激。
亲切的问候。
答案 0 :(得分:0)
我想我已经找到了解决这个问题的部分答案。
我认为如果套接字没有收到任何来自服务器的东西,似乎这个代码行永远停滞不前。
String sDataIncomming = _sReader.ReadLine();
所以新问题是如何检查某些字符串是否来自服务器?
如果没有来自服务器的字符串,则只需停止从套接字监听。