Подтвердить что ты не робот

Как полностью отключить TCPClient? (Инди)

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

TCPClient.Disconnect;
TCPClient.Connect;

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

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

Спасибо

4b9b3361

Ответ 1

используя значение indy 10, вы должны убедиться, что inputbuffer пуст.

if idTcpClient.connected then
begin
 idTcpClient.IOHandler.InputBuffer.clear;
 idTcpClient.Disconnect;
end;

Ответ 2

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

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

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

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

Ответ 3

TCPClient.IOHandler.InputBuffer.Clear;
TCPClient.IOHandler.CloseGracefully;
TCPClient.Disconnect;