Как полностью отключить TCPClient? (Инди) - PullRequest
13 голосов
/ 26 августа 2010

Когда мой Tcpclient работает, с этим кодом:

TCPClient.Disconnect;
TCPClient.Connect;

Я получаю "поднял класс исключений EIdAlreadyConnected с сообщением« Уже подключено ».« Ошибка все еще (тогда как он был отключен ранее).

Итак, как мне полностью отключить его?

Спасибо

Ответы [ 3 ]

18 голосов
/ 26 августа 2010

используя indy 10, вы должны убедиться, что входной буфер пуст.

if idTcpClient.connected then
begin
 idTcpClient.IOHandler.InputBuffer.clear;
 idTcpClient.Disconnect;
end;
1 голос
/ 04 июля 2016
TCPClient.IOHandler.InputBuffer.Clear;
TCPClient.IOHandler.CloseGracefully;
TCPClient.Disconnect;
1 голос
/ 26 августа 2010

Вы говорите, что он отключен, но вы только дали команду на отключение.

Сетевой трафик требует времени, и, возможно, вы переподключились до того, как действительно отключились.

Возможно, вам нужно отслеживать состояние или событие подключения, чтобы дождаться, пока вы действительно отключитесь.

... или попробуйте обработать исключение и проигнорировать его, используя try..except

...