Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IdPOP3 
:(
    Опции темы
Garmahis
Дата 24.3.2006, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



Есть несколько клиентов переписывающихся между собой по почте. Для этого они используют один и тот же почтовый ящик.
Вот так идёт загрузка почты:
Код

IdPOP31.Connect;
if IdPOP31.Connected then
begin
  m:=IdPOP31.CheckMessages;
  for i := 1 to m do
    begin
      IdMessage1.Clear;
      IdPOP31.Retrieve(i,IdMessage1);
      if Copy(IdMessage1.Subject,1,1)<>'@' then
      begin
      IdMessage1.Clear;
      IdPOP31.Delete(i);
      end;
      if IdMessage1.Subject='@'+Log then
      begin
      RichEdit1.Lines:=IdMessage1.Body;
      if RichEdit1.Lines[0]='#Report' then Report;
      IdMessage1.Clear;
      IdPOP31.Delete(i);
      end;
    end;
end;
IdPOP31.Disconnect;

Вначале теме писем они всегда первым символом всталяют собаку если нет собаки значит спам и письмо удаляется.
После собаки идёт номер клиента по которому он определяет что письмо адресовано ему.
Проблема в следующем. Если например клиент 1 проверяет почту, а в это же время криент 2 пытается сделать тоже самое, то клиента 1 отрубает и выскакивет сообщение что вы отключены потому что кто-то другой пытается получить почту. Подскажите как этого избежать? Можно ли перед коннектом проверить подключён ли ктонить ещё?

PM   Вверх
Pakshin A. S.
Дата 24.3.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Примитив: поставить try...finally или try...except smile
PM   Вверх
Garmahis
Дата 24.3.2006, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



Примитив очевиден. Но тут проблема в том, что не желательно что бы клиент два раза получал одно и тоже послание. Тоесть если он его загрузил но удалить не успел при повторном конекте он будет его второй раз получать. Это конечно тоже можно обойти введя например номер сообщения, но всё равно проблемы это не решает. клиента одновременно работает до 5 штук. По идее они должны проверять почту не реже раза в минуту. Тоесть вероятность обрыва получается велика...
PM   Вверх
Snowy
Дата 25.3.2006, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Данная проблема разрешается на уровне сервера.
Нужно создать отдельные почтовые ящики для каждого клиента.
А основной почтовый ящик должен продублировать сообщение всем и удалить письмо.
Если сервер этого не умеет, то можно создать элементарную программу, которая будет мониторить ящик и рассылать копию письма всем. Потом оригинал удалять.
Проблема решается просто тиражированием письма на множество ящиков.
PM MAIL   Вверх
Garmahis
Дата 25.3.2006, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



Мне кажется это не реально. Клиентов может быть сколько угодно. Одни могут появляться другие исчезать. Не возможно же для каждго создавать по почтовому ящику!
PM   Вверх
Демо
Дата 25.3.2006, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 3
Всего: 50



Garmahis,

На сервере должно быть разрешено одновременное подключение нескольких клиентов под одним логином.


--------------------
    
PM MAIL ICQ Skype   Вверх
Garmahis
Дата 25.3.2006, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 254
Регистрация: 23.12.2004

Репутация: нет
Всего: 4



Сервер то не мой smile У нас сайт на агаве... Я щас погляжу в настройки может можно настроить...
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0501 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.