Текущий архив: 2004.05.30;
Скачать: CL | DM;
ВнизTIdTCPServer Найти похожие ветки
← →
Ozone © (2004-04-15 12:52) [0]При закрытии сервера если были подключены клиенты - выдается сообщение "Termnate Thread timeout". Я так полагаю, что их (клиентов) нужно перед этим насильственно отрубать. Как это сделать?
← →
DevelS (2004-04-15 13:03) [1]with TCPServer.ThreadMgr.ActiveThreads.LockList do
try
for I := 0 to Count - 1 do
try
TIdPeerThread(Items[I]).Connection.Disconnect();
except
TIdPeerThread(Items[I]).Stop;
end;
finally
TCPServer.ThreadMgr.ActiveThreads.UnlockList;
end;
← →
Verg © (2004-04-15 13:04) [2]
> Ozone © (15.04.04 12:52)
> При закрытии сервера если были подключены клиенты - выдается
> сообщение "Termnate Thread timeout". Я так полагаю, что
> их (клиентов) нужно перед этим насильственно отрубать. Как
> это сделать?
Значит в OnExecute что-то не то сделано.
← →
Ozone © (2004-04-15 13:33) [3]TO Verg[2]
if not AThread.Terminated and AThread.Connection.Connected then begin
try
sType := AThread.Connection.ReadLn();
size := AThread.Connection.ReadLn();
AThread.Connection.ReadStream(_file, StrToInt(size), false);
/*..*/
except
end;
end;
Что не так? Может что-то забыл?
TO DevelS[1]
Спасибо, но не помогает.
← →
BlackTr (2004-04-15 13:43) [4]А если в OnExecute, в конце написать AThread.Connection.Disconnect; ?
← →
Verg © (2004-04-15 13:49) [5]Что происходит в /*..*/ ?
← →
Ozone © (2004-04-15 13:50) [6]TO BlackTr[4]
И что? Он примет и отключит. Мне токого не надо....
← →
Ozone © (2004-04-15 13:51) [7]TO Verg ©[5]
Там принятая картинка сохраняется в БД и выводится на экран.
← →
Verg © (2004-04-15 13:54) [8]
> Ozone © (15.04.04 13:51) [7]
> TO Verg ©[5]
>
> Там принятая картинка сохраняется в БД и выводится на экран.
Я так понимаю, что через synchronize?
Если это происходит достаточно долго, либо с ожиданием чего-нибудь, то вполне вероятна "Termnate Thread timeout".
← →
Ozone © (2004-04-15 13:59) [9]TO Verg ©[8]
Т.е. надо перед этим еще раз Terminate проверять?
← →
Verg © (2004-04-15 14:04) [10]
> Ozone © (15.04.04 13:59) [9]
> TO Verg ©[8]
>
> Т.е. надо перед этим еще раз Terminate проверять?
При чем тут Terminate.
Я не вижу что и как делается в /*..*/.
Если бы клиентский поток просто висел на Connection.Readln или connection.ReadStream, то все было-бы ок. Если же он говорит, что таймаут завершения потока, значит твой поток висит где-то или чем-то своим занят, заглушив все Exception или не обращаясь к connection или.... да много каких "или" может быть.
← →
BlackTr (2004-04-15 14:07) [11]А что сервер должен делать ?
Вполне вероятно, что вам нужны не блокирующие сокеты.
← →
Ozone © (2004-04-15 14:20) [12]TO BlackTr[11]
Он должен принимать картинки от клиентов, сохраниять их в БД и выводить на экран.
← →
BlackTr (2004-04-15 14:21) [13]Так принял, сохранил, вывел на экран, и отрубил клиента :)
← →
Ozone © (2004-04-15 14:23) [14]To Verg ©[8]
> Я так понимаю, что через synchronize?
Через CriticalSection.
← →
Ozone © (2004-04-15 14:24) [15]TO BlackTr[13]
Дык надо много принимать.
← →
Verg © (2004-04-15 14:32) [16]
> Ozone © (15.04.04 14:23) [14]
> Через CriticalSection.
Проблему я тебе объяснил - твой поток "застревает" в /*..*/
Где, как и почему, выяснять придется самому - кода нет, а если там еще и какая-нибудь "База данных", то там все что угодно может быть - может встать на блокировке записи, таблицы, на подключении к серверу и еще тысяча и одна причина....
← →
Ozone © (2004-04-15 14:36) [17]TO Verg ©[16]
Понятно. Будем думать.
← →
BlackTr (2004-04-15 14:45) [18]Так ведь вроде когда OnExecute заканчивается, поток все равно висит ???
← →
Ozone © (2004-04-15 14:51) [19]TO BlackTr[18]
Да, но если клиенту нужно передать 5 картинок в сек, то имхо, по твоему это не удасться сделать - будет траться много времени на постоянно подключение.
Проще один раз подключиться и работать, работать, работать...
← →
Verg © (2004-04-15 14:53) [20]
> BlackTr (15.04.04 14:45) [18]
> Так ведь вроде когда OnExecute заканчивается, поток все
> равно висит ???
Конечно. Только не висит, а снова вызывает OnExecute, если нет признаков разрыва соединения или остановки потока.
Страницы: 1 вся ветка
Текущий архив: 2004.05.30;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.036 c