Команда RETR. После положительного ответа
Send("DELE " + index); string tmp = Receive(); }
/// <summary> /// Получение сообщения. /// </summary> /// <param name="index">Номер сообщения.</param> /// <returns>Сообщение.</returns> /// <example> Команда RETR. После положительного ответа сервер передает содержание сообщения. /// </example> public override Message GetMessage(uint index) { CheckConnection();
Send("RETR " + index); string message = ReceiveMessage();
message = Utils.RemoveByteStuffedSequence(message); return new Message(this, TruncateTail(message), index); }
public void OnRecievedData( IAsyncResult ar ) { }
/// <summary> /// Получение ответа сервера без проверки подлинности. /// </summary> /// <returns>Ответ сервера.</returns> StringBuilder UnsafeReceive() { StringBuilder tmp = new StringBuilder(); Encoding cenc = Encoding.ASCII; IAsyncResult asynResult; byte[] buf = new byte[1024]; int recv = 0; do { asynResult = _socket.BeginReceive(buf, 0, buf.Length, SocketFlags.None, null, null); if (asynResult.AsyncWaitHandle.WaitOne()) { recv = _socket.EndReceive(asynResult); string t = cenc.GetString(buf, 0, recv); tmp.Append(t); if (t.LastIndexOf(FiveOctalTerm) > 0) break; } } while(_socket.Poll(PollTimeout, SelectMode.SelectRead));
return tmp; } /// <summary> /// Получение ответа сервера без проверки подлинности. /// </summary> /// <returns>Ответ сервера.</returns> StringBuilder UnsafeReceiveMessage() { StringBuilder tmp = new StringBuilder(); Encoding cenc = Encoding.ASCII; IAsyncResult asynResult; byte[] buf = new byte[1024]; int recv = 0; do { asynResult = _socket.BeginReceive(buf, 0, buf.Length, SocketFlags.None, null, null); if (asynResult.AsyncWaitHandle.WaitOne()) { recv = _socket.EndReceive(asynResult); string t = cenc.GetString(buf, 0, recv); tmp.Append(t); //if (t.LastIndexOf(FiveOctalTerm) > 0) // break; } } while(!tmp.ToString().EndsWith(FiveOctalTerm));
return tmp; } /// <summary> /// Возвращение ответа сервера. /// </summary> /// <returns>Ответ сервера.</returns> string Receive() { StringBuilder tmp = UnsafeReceive(); string str = tmp.ToString(); AnalyseResponse(str);