
Untitled
By: a guest on
Apr 25th, 2012 | syntax:
C# | size: 1.04 KB | hits: 20 | expires: Never
/// <summary>
/// Continually reads data from the stream until all data has been read.
/// </summary>
/// <param name="socket">The socket to read data from.</param>
/// <returns></returns>
private byte[] GetData(ref Socket socket)
{
// create an initial buffer list to hold all the data
var buffer = new List<byte>();
// okay, now create a big buffer.
var bufferArray = new byte[socket.ReceiveBufferSize];
// fill it
var length = socket.Receive(bufferArray);
// trim the data
Array.Resize(ref bufferArray, length);
// add it to the buffer
buffer.AddRange(bufferArray);
// check; allows us to keep receiving data.
if (length.Equals(socket.ReceiveBufferSize) || socket.Available > 0)
buffer.AddRange(GetData(ref socket));
// all done, give the buffer back now
return buffer.ToArray();
}