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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2007, 13:58   #1
Vovkin
Пользователь
 
Регистрация: 09.01.2007
Сообщений: 10
По умолчанию Непонятка или ошибка TIdHTTPServer

Строил серверное и клиентское приложение на основе TIdHTTP и TIdHTTPServer. Обнаружил интересное явление. При каждом запросе слиентом сервера (при выполнении OnCommandGet в TIdHTTPServer) приложение отедает 4 байта памяти. При долгой работе сервера и большом кол-ве запросов приложение переполняет память и падает.
Что это может быть? Ошибка в компоненте и утечка памяти.
Или где-то компонент сохраняет какие-то данные?
Vovkin вне форума Ответить с цитированием
Старый 09.01.2007, 14:39   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

HTTP сессию небось постоянно открытой держите ? а вот зря.. закрывайте сессии и все будет нормально
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 09.01.2007, 14:42   #3
Vovkin
Пользователь
 
Регистрация: 09.01.2007
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
HTTP сессию небось постоянно открытой держите ? а вот зря.. закрывайте сессии и все будет нормально
А как это сделать?
Можно пример кода?
Vovkin вне форума Ответить с цитированием
Старый 09.01.2007, 14:50   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

IdHTTPServer1.EndSession(<имя сессии>);
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 09.01.2007, 15:14   #5
Vovkin
Пользователь
 
Регистрация: 09.01.2007
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
IdHTTPServer1.EndSession(<имя сессии>);
Не совсем понял. Где вызывать EndSession (в OnCommandEnd?) и где взять имя сессии?
Vovkin вне форума Ответить с цитированием
Старый 09.01.2007, 15:24   #6
Vovkin
Пользователь
 
Регистрация: 09.01.2007
Сообщений: 10
Хорошо

Цитата:
Сообщение от Квэнди Посмотреть сообщение
IdHTTPServer1.EndSession(<имя сессии>);
У меня в программе только код:
procedure TFormUser.IdHTTPServer1CommandGet(A Context: TIdContext;
ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var
i : integer;
begin
if ARequestInfo.Document = '/reguser.html' then
begin
i := REQOK;
AResponseInfo.ContentStream := TMemoryStream.Create;
AResponseInfo.ContentStream.Size := sizeof(integer);
AResponseInfo.ContentLength := sizeof(integer);
AResponseInfo.ContentStream.WriteBu ffer(i, sizeof(integer));
AResponseInfo.WriteHeader();
AResponseInfo.WriteContent();
end;
AResponseInfo.ContentStream.Free;

end;

и всё. при этом на каждый запрос пропадает 4 байта
Vovkin вне форума Ответить с цитированием
Старый 09.01.2007, 16:06   #7
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

логично что пропадает AContext: TIdContext; остается тогда просто залезайте в AContext: TIdContext; и убивайте поток
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 09.01.2007, 16:15   #8
Vovkin
Пользователь
 
Регистрация: 09.01.2007
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
логично что пропадает AContext: TIdContext; остается тогда просто залезайте в AContext: TIdContext; и убивайте поток
Не получаетсяю
AContext.RemoveFromList ни к чему не приводит.
AContext.Destroy ваще отваливает акцес виолейшн 0х000000.
У вас есть рабочий пример сервера?
Vovkin вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Непонятка с русским Antidoc Общие вопросы C/C++ 1 11.08.2008 21:21
TidHTTPServer не многозадачный? vitek123 Работа с сетью в Delphi 2 16.11.2007 08:32
Где ошибка? jarded Общие вопросы C/C++ 2 01.06.2007 15:10
в чем ошибка? Lonix Общие вопросы Delphi 2 24.03.2007 09:41