Как правильно отключить TIdTcpClient - PullRequest
0 голосов
/ 05 ноября 2018

Как правильно отключить TidTcpClient от TIdTcpServer?

Я имею в виду, если я вызываю Disconnect на стороне клиента, я получаю 10054 connection reset by peer на событии onexception сервера.

если я вызываю отключение на AContext (используя очередь / событие OnExecute), сервер возвращает connection closed gracefully на событие onexception.

Мой текущий протокол не использует события OnConnect и OnDisconnect, только OnExecute с IdTCPServer1.ContextClass := TClientContext;

Я имею в виду, потому что когда я возвращаю количество подключенных клиентов, используя список Контекстов, всегда возвращаю неверное число, поэтому теперь я использую:

InterlockedIncrement(FClientCount);
TThread.Synchronize(nil, UpdateUI);

Увеличение при событии OnConnect и уменьшение при событии OnDisconnect. Так как при OnException вызывается OnDisconnect, тоже уменьшаем число.

Может быть, если счетчик отключений TIdTcpClient будет правильно работать, при использовании списка контекстов нет?

...