C# 动态缓冲区的实现
在网络编程的开发环境当中经常会使用缓冲区来进行数据的接收与发送,但是当我们需要发一段连续的数据的时候,使用
1 byte[] _buffer= new byte[lenght]; 显然很死板,我们需要一个更加“智能”的缓冲区来管理这些数据。 ok,我们可以编写一个动态缓冲区管理器,它在内部维护一个byte[]类型的缓冲区,还有一个数据指针,以及已使用的字节空间的计数。
1 2 3 4 5 6 7 8 9 10 11 12 13 class DynamicBufferManager { public int DataCount {get;private set;} public int DataPointer {get;private set;} public byte[] Buffer {get;private set;} public DynamicBufferManager(int size) { DataCount = 0; DataPointer = 0; BUffer = new byte[size]; } } 我们的动态缓冲管理器主要就是由一个内部缓冲区还有一个数据指针和已用数据计数器来构成的。我们的主要思路是,我们的动态缓冲区可以随时设置新的大小,可以清除指定大小/全部的数据。当然我们也可以向缓冲区内写入/读取我们所需要的数据。
下面我们来实现大小与清除数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 class DynamicBufferManager { public void SetBufferSize(int newSize) { if(newSize > Buffer.