![]() |
|
![]() ![]() ![]() |
|
Mysterio |
|
|||
![]() Планирующий ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 28.12.2004 Репутация: нет Всего: нет |
При выполнении процедуры отключения клиентов от сервера IdTelnetServer остаются какие-то фантомы в списке, с IP-адресом 0, в счетчике потоков IdTelnetServer1->ThreadMgr->ActiveThreads->Count фигурируют.
Соорудил простенький пример, который и цепляю ниже (зайти в telnet.exe, подключиться двумя-тремя клиентами и нажать "Выкинуть всех", остаются фантомы). Вот то, что написано в функции на кнопке "Выкинуть":
Надеюсь, компоненты Indy тут ни при чем, и ошибка в коде. Присоединённый файл ( Кол-во скачиваний: 5 ) ![]() |
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 32 Всего: 158 |
Mysterio, в индейских серверных компонентах реализован пул потоков для обработки входящих соединений, так что это не баг, это - фича. и в большинстве случаев влезать в эту "кухню" смысла не имеет.
|
|||
|
||||
Mysterio |
|
|||
![]() Планирующий ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 28.12.2004 Репутация: нет Всего: нет |
Хорошо, но как тогда достоверно определять, сколько же клиентов соединилось? Вручную выколупывать из TList'a ненулевые IP?
Попробовал все-таки влезть в "кухню". Результат или тот же, или хуже: - попробовал на кнопке "выкинуть всех" повесить IdTelnetServer1->ThreadMgr->TerminateThreads(lst), lst получаю все так же, с помощью LockList(). Приложение полностью зависло. - попробовал соседнюю ф-цию ReleaseThread(ptr) для одного потока. Приложение полностью зависло. - добавил компонент IdThreadMgrPool, в свойстве сервера ThreadMgr выбрал его. У IdThreadMgrPool1 свойство PoolSize = 0. После запуска программы ничего не изменилось, остаются фантомы. - попробовал взять список через добавленный компонент пула, IdThreadMgrPool1->ActiveThreads. Он тоже возвращает *TList. Список получился аналогичный IdTelnetServer1->Threads->LockList(). С теми же фантомами. - IdThreadMgrPool1->TerminateThreads(lst) тоже подвешивает приложение. Это сообщение отредактировал(а) Mysterio - 4.2.2009, 09:40 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |