Lesnikowski.Pawel.Mail.Pop3.Pop3.Receive C# (CSharp) Метод

Receive() приватный Метод

private Receive ( ) : string
Результат string
        private string Receive()
        {
            const int bufferLength=1024;
            byte[] buffer=new byte[bufferLength+1];	// extra char for null terminator
            StringBuilder message=new StringBuilder(bufferLength);
            int bytesRead;

            for(;;)
            {
                if (EndsWith(message,"\r\n.\r\n")==true)
                {
                    //this is rather the end wait short
                    if (socket.Poll(100, SelectMode.SelectRead)==false)
                        break;//no data in socket
                }
                else
                {
                    //it dosn't look like the end wait longer 5s
                    if (socket.Poll(5000000, SelectMode.SelectRead)==false)
                        break;//no data in socket
                }

                bytesRead=socket.Receive(buffer, bufferLength, 0);
                if (bytesRead==0)
                    break;

                // add null terminator
                buffer[bytesRead]=0;

                //load with some 8bit coding to allow charset changing
                message.Append(Encoding.Default.GetChars(buffer, 0, bytesRead));
            }
            message.Replace("\n..","\n.");
            string tmp=message.ToString();

            if(tmp.StartsWith(POS_STAT_IND)==false)
                throw new Exception("Received negative response from POP3 server");

            return tmp;
        }