private void Receive()
 {
     while (IsReceiveThreadOn)
     {
         if (!IsConnected)
         {
             throw new Exception("From receive thread: disconnected");
         }
         lock (_receiveLocker)
         {
             if (Socket.Available > 0)
             {
                 try
                 {
                     var count  = _receiveBuffer.Writer.GetHowManyCountCanWriteInThisBlock();
                     var length = Socket.Receive(_receiveBuffer.Writer.Node.Value, _receiveBuffer.Writer.Position,
                                                 count, SocketFlags.None);
                     _receiveBuffer.Writer.MovePosition(length);
                     var bytes = _receiveBuffer.ReadAllBytes();
                     SocketReceiveEvent(bytes);
                 }
                 catch (Exception e)
                 {
                     throw new Exception(e.ToString());
                 }
             }
         }
     }
 }
Exemple #2
0
        private void EndReceive(IAsyncResult ar)
        {
            var socket = ar.AsyncState as Socket;

            AssertThat.IsNotNull(socket);
            int length = socket.EndReceive(ar);

            receiveBuffer.Writer.MovePosition(length);
            var bytes = receiveBuffer.ReadAllBytes();

            SocketReceiveEvent(bytes);
            if (length > 0)
            {
                Receive();
            }
        }
Exemple #3
0
        private void EndReceive(IAsyncResult ar)
        {
            var socket = ar.AsyncState as Socket;

            Assert.NotNull(socket, "Socket is null when receive end");
            int length = socket.EndReceive(ar);

            _receiveBuffer.Writer.MovePosition(length);
            var bytes = _receiveBuffer.ReadAllBytes();

            SocketReceiveEvent(bytes);
            if (length > 0)
            {
                Receive();
            }
        }