Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.02;
Скачать: CL | DM;

Вниз

Проблемы с ASender.Thread.Connection в Indy 9   Найти похожие ветки 

 
samael6 ©   (2007-06-05 21:29) [0]

Такая проблема: у меня почтовый сервер и все нормально, если не отсылать клиенту большие письма :)
Полностью они до него не доходят. Я отправляю все письмо по строчно, и многие строки теряются. Но если сделать задержку после каждой посылки, то все дойдет.
Вот код:

ASender.Thread.Connection.WriteLn("+OK " + IntToStr(intSize) + " octets");
for i := 0 to MessageStrings.Count - 1 do begin
   ASender.Thread.Connection.Writeln(MessageStrings.Strings[i]);
end;

где, intSize - integer: размер письма;
     MessageStrings - TStrings: само письмо построчно.
Если в тело цикла вставить sleep(1), то все пойдет, но слишком медленно.

Что я не учел?
Спасибо


 
Сергей М. ©   (2007-06-06 08:12) [1]


> samael6 ©   (05.06.07 21:29)


В чем прелесть изобретения велосипеда ?
Ведь есть же готовый компонент - TIdPOP3Server ..


 
Samael6 ©   (2007-06-06 13:23) [2]

Да, именно через него я это и делаю.
Из-под обработчика OnRETR.


 
Сергей М. ©   (2007-06-06 14:37) [3]


> Полностью они до него не доходят


Показывай как принимаешь письма на стороне клиента ..


 
Samael6 ©   (2007-06-06 16:56) [4]

Клиент - The Bat!


 
Сергей М. ©   (2007-06-07 12:53) [5]


> Клиент - The Bat!


А здесь

http://delphimaster.net/view/6-1181070583/

ты почему-то ведешь речь о собственном клиенте ..


 
Samael6 ©   (2007-06-07 16:25) [6]

Нет,
это разные ветки и разные проблемы с разными программами


 
Сергей М. ©   (2007-06-07 16:26) [7]


> многие строки теряются


"Многие" - это какие ?

Какова закономерность ?


 
Samael6 ©   (2007-06-07 19:59) [8]

Закономерности ворде нет, похоже что буфер сокета не успевает отчищаться (выгребаться), и следовательно происходит перезатирание предыдущего значения.
По крайней мере так оно смотрится, а лечение путем задержки это только подтверждает.
Может как-то можно определить, произошло ли чтение из сокета и готов ли он уже к новой порции данных?


 
Сергей М. ©   (2007-06-08 08:25) [9]


> Samael6 ©   (07.06.07 19:59) [8]


> буфер сокета не успевает отчищаться (выгребаться), и следовательно
> происходит перезатирание предыдущего значения


Ерунда полнейшая.
Инди использует синхронный транспортный режим.
А подобного рода засада может поджидать только в асинхронном режиме.


> Может как-то можно определить, произошло ли чтение из сокета
> и готов ли он уже к новой порции данных?


На прикладном уровне нельзя.
Да и не нужно это.
Потому что TCP - поточный протокол.


 
Samael6 ©   (2007-06-08 13:51) [10]

Так в чем же тогда трабла?
Может клиент не готов к приему письма построчно и ему нужно передавать блоково? Аля, сначала хидер, затем боди и никак иначе?
Возможно ли такое? Или проблема в другом?


 
Сергей М. ©   (2007-06-08 14:06) [11]


> Samael6 ©   (08.06.07 13:51) [10]


Ну есть же демо-проект в составе Инди с использованием поп3-сервера, почему не сравнить его со своим ?


 
Samael6 ©   (2007-06-08 14:54) [12]

Он практически пустой. Только немного комментария и построчная отправка простого письма клиенту. У меня все тоже самое, но письма не такие мелкие...


 
Сергей М. ©   (2007-06-08 16:28) [13]

Т.е. ты утверждаешь, что если чуть подправить демо-проект в части отправки твоих "крупных" писем, то возникает та же самая проблема ?

А версия Инди какая ?


 
Samael6 ©   (2007-06-08 19:21) [14]

9 (см. тему ветки)



Страницы: 1 вся ветка

Текущий архив: 2008.03.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
15-1201286106
Джо
2008-01-25 21:35
2008.03.02
Восстановление данных учетной записи (Win XP)


15-1201622881
Andrewtitoff
2008-01-29 19:08
2008.03.02
В чем ошибка?2


8-1175243509
Jprrrrrrrrr
2007-03-30 12:31
2008.03.02
Заголовок jpeg


2-1202471615
smartleds
2008-02-08 14:53
2008.03.02
Подскажите как вставить свою фотку в прогу


2-1202037033
kas86
2008-02-03 14:10
2008.03.02
Считать определенный текст из файла