Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];

Вниз

Как грамотно отключить от 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.04 c
3-1165474104
George
2006-12-07 09:48
2007.05.27
Права записи в InterBase


15-1177771870
исследователь
2007-04-28 18:51
2007.05.27
Сортировка матрицы


2-1178726622
Strate
2007-05-09 20:03
2007.05.27
Не могу понять почему это работает :)


15-1177851439
ProgRAMmer Dimonych
2007-04-29 16:57
2007.05.27
Подскажите, пожалуйста, сайт,


11-1160141707
Zoom Evstrahiev
2006-10-06 17:35
2007.05.27
Зеркало для KOLCoolBar





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский