以下のコードは、tcp クライアント ストリームから読み取る必要があるすべてのものを読み取り、次の反復では Read() にそのまま残ります (データを待っていると仮定しています)。読み取るものが何もないときに返されないようにするにはどうすればよいですか? タイムアウトを低く設定し、失敗したときに例外に応答する必要がありますか? それとももっと良い方法がありますか?
TcpClient tcpclnt = new TcpClient();
tcpclnt.Connect(ip, port);
Stream stm = tcpclnt.GetStream();
stm.Write(cmdBuffer, 0, cmdBuffer.Length);
byte[] response = new Byte[2048];
MemoryStream ms = new MemoryStream();
byte[] buffer = new Byte[2048];
int length;
while ((length = stm.Read(buffer, 0, buffer.Length)) > 0)
ms.Write(buffer, 0, length);
byte[] response = ms.ToArray();
tcpclnt.Close();