Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2015, 01:23   #1
rachina
Пользователь
 
Регистрация: 15.03.2015
Сообщений: 27
Печаль Pop3 протокол с winsock

Доброго времени суток!
есть программа, которая работает как почтовый клиент. с smtp не было особых проблем. всё отлично отправляет. а вот читать не особо хочет...
чуть ниже текст процедуры.

застревает на строке
Код:
 while pos(#13, _tempStr)>0 do
зависает и... всё. потом, конечно "отвисает", но текст письма не показывает.


Код:
procedure TForm1.ReadMailClick(Sender: TObject);
var
 _buff:array [0..256] of Char;
 i, j:integer;
 _tempStr:AnsiString;
 _size:integer;
begin
 if MailListView.Selected = nil then
  Exit;
 
 _size:=strToInt(MailListView.Selected.SubItems.Strings[0]);
 i:=0;
 
 AddToLog('Попытка загрузки письма...');
 
 SendToSocket(_popSocket, 'RETR '+IntToStr(MailListView.Selected.Index+1));
 AddToLog(ReadFromSocket(_popSocket));
 Sleep(1000);
 
 while i<=_size do
 begin
  if _size-i<256 then
  begin
   fillchar(_buff, sizeof(_buff),#0);
   j:=_size-i+50;
   recv(_popSOcket, _buff, j, 0);
 
    _tempStr:=_tempStr+_buff;
    Break;
    Exit;
  end;
 
  fillchar(_buff, length(_buff), #0);
  i := i+recv(_popSocket, _buff, length(_buff), 0);
  _tempStr:=_tempStr+_buff;
 end;
 
 TextMemo2.Lines.Clear;
 
 while pos(#13, _tempStr)>0 do
 begin
  TextMemo2.Lines.Add(Copy(_tempStr, 1, pos(#13, _tempStr)));
  Delete (_tempStr, 1, pos(#13, _tempStr)+1);
 end;
 
 TextMemo2.Lines.Add(_tempStr);
end;
будьте добры, подскажите, в чём проблема?


emclient_-_kopia (2).rar

Последний раз редактировалось rachina; 03.11.2015 в 01:41.
rachina вне форума Ответить с цитированием
Старый 03.11.2015, 11:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

recv тебе блокирует поток, потому и зависает.
На INDY не желаешь пересесть?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi - HttpS протокол (ssl + winsock ) delphi rafaelka Win Api 11 11.12.2014 16:53
Протокол POP3 и SMTP. profi Свободное общение 4 07.02.2010 18:01
Как скачать прикрепленный файл к пісьму по протоколу pop3 WinSock Enemy Работа с сетью в Delphi 0 04.03.2009 01:03