Могу ли я отправить TCP RST с Indy-клиента Delphi? - PullRequest
1 голос
/ 31 августа 2011

Мы экспериментировали с клиентом Delphi Indy (соединительная линия SVN) и Apache с mod_php. Вызывается PHP-скрипт, который регистрирует функцию отключения.

Во время тестирования эта функция выключения вызывается только после завершения сценария и возврата connection_status() на ноль.

Если я использую CURL и нажимаю Ctrl-C во время выполнения скрипта, CURL отправляет пакет TCP с флагом RST, установленным в логическое значение true. Это запускает функцию отключения, и connection_status() возвращается обратно. Если время соединения истекает, флаг TCP FIN включается, но функция выключения не запускается - фактически процесс Apache переходит в CLOSE_WAIT, пока не завершится выполнение сценария PHP. Если я использую Indy, единственный установленный флаг - это FIN.

Имея все это в виду, можем ли мы заставить Indy отправлять TCP-пакет с флагом RST, установленным в true? Мы хотим сделать это, когда время соединения истекает (решение проблемы, для которой мы тестируем).

См. Также http://uk.php.net/connection_handling

1 Ответ

0 голосов
/ 31 августа 2011

Indy всегда пытается корректно закрыть соединение, что не отправит флаг RST. Если вам это нужно, вам придется принудительно закрыть соединение.

...