Beispiel #1
0
 internal void WriteToStream(string message)
 {
     try
     {
         byte[] encodedMessage = Encoding.ASCII.GetBytes(message);
         StreamToProcess.Write(encodedMessage, 0, encodedMessage.Length);
         StreamToProcess.Flush();
     }
     catch (Exception e)
     {
         // Let the user know what went wrong.
         Console.WriteLine("Could not write on the stream:");
         Console.WriteLine(e.Message);
     }
 }
Beispiel #2
0
        public override void ProcessConnection(object message)
        {
            Console.WriteLine("James Sharp POP Server is processing message.");
            StringBuilder completeMessage = new StringBuilder();

            // Incoming message may be larger than the buffer size.
            do
            {
                int numberOfBytesRead = StreamToProcess.Read(_buffer, 0, _buffer.Length);
                completeMessage.AppendFormat("{0}", Encoding.ASCII.GetString(_buffer, 0, numberOfBytesRead));
            }while (StreamToProcess.DataAvailable);

            Console.WriteLine("Received message: " + completeMessage);

            _buffer = Encoding.ASCII.GetBytes("POP3 implemented!");
            StreamToProcess.Write(_buffer, 0, _buffer.Length);
            StreamToProcess.Close();
        }
Beispiel #3
0
        public override void ProcessConnection(object message)
        {
            SmtpProcessor processor = new SmtpProcessor();

            Console.WriteLine("James Sharp SMTP Server is processing message.");

            WriteToStream(_codeTable.GetMessageForCode(220));

            do
            {
                string request = this.ReadFromStream();
                Console.WriteLine("Recieved command: " + request);
                string response = processor.ProcessMessage(request);
                WriteToStream(response);
            }while (!processor.CanSessionBeEnded);

            StreamToProcess.Close();
            Console.WriteLine("Closed channel.");
        }
Beispiel #4
0
        internal string ReadFromStream()
        {
            StringBuilder completeMessage = new StringBuilder();

            try
            {
                do
                {
                    _buffer.Initialize();
                    int numberOfBytesRead = StreamToProcess.Read(_buffer, 0, _buffer.Length);
                    completeMessage.AppendFormat("{0}", Encoding.ASCII.GetString(_buffer, 0, numberOfBytesRead));
                }while (StreamToProcess.DataAvailable);
            }
            catch (Exception e)
            {
                // Let the user know what went wrong.
                Console.WriteLine("The stream could not be read:");
                Console.WriteLine(e.Message);
                return(string.Empty);
            }

            Console.WriteLine("Received message: " + completeMessage);
            return(completeMessage.ToString());
        }