Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.27;
Скачать: CL | DM;

Вниз

Как грамотно отключить от IdTCPServer всех IdTCPClient   Найти похожие ветки 

 
Layner ©   (2006-11-17 15:40) [0]

Опять пример "IdTCPDemo"... При закрытии сервера - если были подключены клиенты, то сервер выдает ошибку. Поэтому добавил проц. отключения, код ниже. Сама по себе работает без ошибочно, но если данный код поместить в
OnClose сервера, то код не отрабатывает, пишет ошибку "Terminate Thread Timeout"

procedure Tfmain.Button2Click(Sender: TObject);
var
i: integer;
RecClient: PClient;
RecThread: TIdPeerThread;
begin
  with Clients.LockList do
  try
   for i := 0 to Count-1 do
   begin
     RecClient := Items[i];
     RecThread := RecClient.Thread;
     RecThread.Connection.Socket.Close;
    end;
   finally
     Clients.UnlockList;
   end;
end;


 
untermensch   (2006-11-17 15:55) [1]

OnClose срабатывает из основного потока после остановки сервера, потому и не поможет. Хотя странно, у меня вроде сервер ошибок не выдавал, а вот некоторые сокетные клиенты выдавали.
Но вообще при закрытии сервера надо тогда вначале терминировать всех клиентов а потом уже останавливать и разрушать сервер.


 
DVM ©   (2006-11-17 16:17) [2]

Такое ощущение, что примеры от Indy писали люди, которые сами не понимают как Indy работает. Там сплош и рядом обращения из вторичных потоков в главный без всякой синхронизации и.т.д.



Страницы: 1 вся ветка

Текущий архив: 2007.05.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.07 c
2-1178518958
RomanLN
2007-05-07 10:22
2007.05.27
как настроить контекстную подсказку для DBNavigator1???


15-1177693897
Pazitron_Brain
2007-04-27 21:11
2007.05.27
Бывают ли?


15-1177827660
iZEN
2007-04-29 10:21
2007.05.27
Вышла первая часть книги Lazarus Delphi-кросс-платформенный.


6-1164016111
Aleksandr.
2006-11-20 12:48
2007.05.27
Как можно хотя бы узнать программно, открыт ли доступ к порту?


3-1173266545
__DATA__
2007-03-07 14:22
2007.05.27
Refresh в компоненте IbDataSet не работает