Форум: "Сети";
Текущий архив: 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