通过网络读取数据时,您指定一个缓冲区来接收数据:
byte[] b = new byte[4096];
socket.Receive(b);
现在我的第一个想法当然是通过将接收缓冲区声明为类的成员变量来重用它。我的下一个问题是我没有收到我期望的所有数据,所以我需要缓冲我的数据。这很容易通过跟踪接收到的字节数并指定偏移量来实现:
socket.Receive(m_ReceiveBuffer, count, m_ReceiveBuffer.Length - count);
现在,这里的问题是,如果还不够,我猜我需要增加缓冲区,这意味着复制内存,并继续接收到这个缓冲区。假设出现问题,这个缓冲区会继续增长,如果收到足够大的消息,系统就会内存不足。
任何想法如何正确处理这个?有没有比我所说的填充、复制、增长、填充、复制、增长更好的方式来接收数据?