Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Как правильно отключить клиента в Indy9


Автор: sas099 1.11.2007, 12:47
Думаю тема обсуждалась не раз, но всеже...
Проблема такая:
имеется сервер.К нему приконнекчено несколько клиентов.Раз в 20 сек клиенты шлют на сервер Информацию.Нужно определить если клиент в течении минуты не прислал .... значит он повис.Его надо отключить.Клиенты работают через GPRS.Видно что клиент уже 20 минут не посылает инфу а сервер его видит как законнекченного.Как поступить в этой ситуации?

еще вопрос: делаю отключение коиента таким образом:

procedure ServerFrmMain.Button2Click(Sender: TObject);
var i:integer;
begin
 with Server.Threads.LockList do try
   i:=Count;
   while  i > 0  do begin
     Dec(i);
     TIdPeerThread(Items[i]).Connection.Write('You are Disconnected');
     TIdPeerThread(Items[i]).Terminate;
     (*TIdPeerThread(Items[i]).Connection.Disconnect;*)
   end;
 finally
   Server.Threads.UnlockList;
 end;
end;
===================================================
procedure ServerFrmMain.Button1Click(Sender: TObject);
var i:integer;
begin
 with Server.Threads.LockList do try
   i:=Count;
   memo1.Lines.Clear;
   memo1.Lines.Insert(0,IntToStr(i));
 finally
   Server.Threads.UnlockList;
 end;
end;

После  TIdPeerThread(Items[i]).Terminate; 
вижу тоже самое число приконнекченных клиентов до того момента пока клиент не пошлет что-нить серверу.
После этого вижу этого клиента отконнекченным и кол-во приконнекченных клиентов уменьшается на единицу.Потом слдующи клиент посылает - и опять уменьшается список приконнекченных.
Подскажите где грабли?

Автор: MetalFan 1.11.2007, 15:32
а если Connection.Close ?

Автор: sas099 2.11.2007, 16:58
Спасибо, разобрался!
Грабли были в Lock-UnlockList в нутри цикла.
А отключать надо ........Connection.Disconnect(*TIdPeerThread(Items[i]).Connection.Disconnect;*)
все тогда нормально работает!
)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)