Собираем все вместе, предполагая, что вы не получите ОГРОМНОЕ (больше, чем может поместиться в памяти) количество данных:
TcpClient tcpclnt = new TcpClient();
tcpclnt.Connect(ip, port);
Stream stm = tcpclnt.GetStream();
stm.Write(cmdBuffer, 0, cmdBuffer.Length);
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);
tcpclnt.Close();
byte[] response = ms.ToArray();
Как уже упоминалось, MemoryStream
будет обрабатывать динамическое распределение байтов для вас. И Stream.Read(byte[], int, int)
вернет длину байтов, найденных в этом «чтении», или 0
, если достигнут конец.