私は、クライアントとサーバーの間に非常に単純なTCP/IP通信プログラムを作成しています。目指すのは、それらの間にある文字列を交換することだけです。クライアントサイドのTCP/IP通信中にループが永久にハングしますか?
クライアントサーバー側は、サーバーに単純な文字列を送受信する必要があります。
問題は、StreamWriterを使用してSeverにデータを送信すると完全に問題が発生することです。しかし、私がStreamReaderを有効にすると、whileループは永遠にぶら下がってしまいます。 "Console.Write(" > ");"行は最初に1回だけ実行されますが、2回目にはもう一度入力する必要はありません。
以下のコードがあります。
メモコードの別の部分にTcpClient _clientとして宣言された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の2行のコードをコメントアウトすると、プログラムは再び完全に機能します。
この問題を解決するにはどうすればよいですか?あなたの知識を共有することは本当に感謝します。
大切にしてください。