Пример #1
0
        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);
        }