private void ReadCallback(IAsyncResult result) { int read; NetworkStream networkStream; try { networkStream = clientSocket.GetStream(); read = networkStream.EndRead(result); } catch (Exception ex) { //clsLOG.SetLOG(LOGTYPE.SYSTEMERROR, ex.ToString()); //An error has occured when reading... clientSocket.Close(); if (OnDisconnected != null) { OnDisconnected(this); } return; } if (read == 0) { //The connection has been closed. clientSocket.Close(); if (OnDisconnected != null) { OnDisconnected(this); } return; } byte[] buffer = result.AsyncState as byte[]; byte[] ResizedBuffer = TrimEnd(buffer); //string sdata = Encoding.ASCII.GetString(buffer).Trim('\0'); _recvBuffer.AddRange(ResizedBuffer); byte[] data = new byte[_recvBuffer.Count]; _recvBuffer.CopyTo(0, data, 0, _recvBuffer.Count); ReciveQueue.Enqueue(data); buffer = new byte[clientSocket.ReceiveBufferSize]; networkStream.BeginRead(buffer, 0, buffer.Length, ReadCallback, buffer); }