Сценарий:
Delphi 2010 работает под управлением последней версии Indy из ствола SVN.
У меня есть приложение, которое использует idHTTP для отправки http-запросов. Этот idHTTP создается только один раз и хранится в памяти до тех пор, пока приложение работает. Я отправляю множество веб-запросов на один и тот же http-сервер (который также является приложением, разработанным мной).
Я использую keep-alive, чтобы держать сокет подключенным.
После нескольких запросов я получаю EIdConnClosedGracefully
на стороне клиента, и не важно, что я делаю после того, как получаю это исключение, каждый последующий запрос к тому же серверу генерирует одно и то же исключение .
Я попытался отключить, закрыть сокет, очистить буфер IOHandler и ничего не получалось.
Если я уничтожу объект IdHttp и воссоздаю его после возникновения исключения, все работает нормально. Но это не то, чего я хочу, потому что мне нужно постоянно подключаться к серверу (чтобы избежать TIME_WAITS и т. Д.).
Кто-нибудь знает, как обрабатывать EIdConnClosedGracefully
исключение на стороне клиента и заставить idHttp работать после того, как это исключение возникает?
EDIT
Я разработал веб-сервер сам, и я уверен, что не отключаюсь после запроса клиента. Я знаю, что это исключение в порядке, , но что не в порядке, так это то, что сокет стал непригодным для использования после этого . Indy должен восстановиться после этого исключения, отсоединив сокет и подключив его при необходимости. Как я уже сказал, это исключение показывается пользователю не только в Delphis IDE. Что мне действительно нужно, так это способ получения этого исключения, я должен иметь возможность продолжать использовать этот сокет. -