当我事先不知道有多少数据将传入时,如何从流中读取数据?现在我只是选择了一个偏高的数字(如下面的代码所示),但不能保证我不会得到更多。
所以我在循环中一次读取一个字节,每次都调整数组的大小?听起来调整大小太多了:-/
TcpClient tcpclnt = new TcpClient();
tcpclnt.Connect(ip, port);
Stream stm = tcpclnt.GetStream();
stm.Write(cmdBuffer, 0, cmdBuffer.Length);
byte[] response = new Byte[2048];
int read = stm.Read(response, 0, 2048);
tcpclnt.Close();
最佳答案
MemoryStream 是你的 friend
http://msdn.microsoft.com/en-us/library/system.io.memorystream
构造没有默认大小,它将自动调整大小。然后按照你的建议循环,每次读取合理数量的数据。我通常至少选择 MTU 作为默认缓冲区大小。
要获取它创建调用的底层 byte[] 数组
memoryStreamInstance.GetBuffer()
关于c# - 从流中读取不知道有多少期望 [c#],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/834605/