Example #1
0
        private void ThreadRun()
        {
            var abData = new Byte[m_nBufferSize];

            try
            {
                int nReceived = m_theSocket.GetStream().Read(abData, 0, m_nBufferSize);

                while (nReceived > 0)
                {
                    m_theCommands.Process(abData);

                    // the Read method will block
                    nReceived = m_theSocket.GetStream().Read(abData, 0, m_nBufferSize);

                    m_lastActiveTime = DateTime.Now;
                }
            }
            catch (SocketException)
            {
            }
            catch (IOException)
            {
            }

            FtpServerMessageHandler.SendMessage(m_nId, "Connection closed");

            if (Closed != null)
            {
                Closed(this);
            }

            m_theSocket.Close();
        }
        private void ThreadRun()
        {
            var abData = new byte[m_nBufferSize];

            try
            {
                int nReceived = 0;
                do
                {
                    var t = m_theSocket.GetStream().ReadAsync(abData, 0, m_nBufferSize);
                    t.Wait(cancelationSource.Token);

                    nReceived = t.Result;
                    lock (lastActiveLock)
                    {
                        m_lastActiveTime = DateTime.UtcNow;
                    }

                    m_theCommands.Process(abData);
                } while (nReceived > 0);
            }
            catch (OperationCanceledException)
            {
            }
            finally
            {
                FtpServerMessageHandler.SendMessage(m_nId, "Connection closed");
                m_theSocket.CloseSafelly();
            }
        }