![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как быстро проверить наличие клиента на компе в сети?
Chorniy © (2008-12-23 12:10:00)Я делаю так, но меня не устраивает скорость работы:
1. Создаю список, элементами которого являются объекты TTcpClient. Каждый объект соответствует компьютеру в локальной сети.
2. В цикле вызываю метод TTcpLient.Connect для каждого клиента.
в сетке 20 компов... моей проги на них нет, то есть метод connect завершается неудачно. В итоге получается что основной поток приложения обрабатывает цикл 20-30 сек, что недопустимо.
Нет ли способа побыстрее проверить наличие клиента на компе из сетки?
я конечно думал о отдельном потоке для каждого TTcpClient, но почему то мне кажется что это некорректно ))) и можно сделать проще.
Chorniy (2008-12-23 13:06:00) [1]ок, спс сергей. идею понял..ушел реализовывать))
Сергей М. (2008-12-23 13:02:00) [2]С помощью практически любого компонента, использующего в качестве транспортного протокол UDP.
Chorniy (2008-12-23 12:55:00) [3]
> бродкаст-сообщение
вот это мне и нужно. с помощью чего ето реализуется в делфи? просто название темы куда копать)))
Chorniy (2008-12-23 12:31:00) [4]
> Стесняюсь спросить, а зачем потребовалось выяснять "наличие
> клиента на компе в сети" заранее
хех.. скорее всего этот вопрос вызван неправильной идеологией моего решения)))) как тогда при запуске многих клиент-серверных приложений, они мгновенно (менее секунды) определяют компьютеры на которых клиент запущен?
Сергей М. (2008-12-23 12:31:00) [5]
> Chorniy
Не так это делается обычно.
Либо чат должен быть централизованным (т.е. иметь выделенный сервер-координатор) либо заинтересованный клиент посылает бродкаст-сообщение а-ля "Есть кто живой ?" и все "живые" обязаны на него ответить а-ля "Я, такой-то, жив по такому-то адрес:порт"
> откуда возникает эта пауза?
Из-за соответствующего дифолтного коннект-таймаута в winsock
Chorniy (2008-12-23 12:23:00) [6]и вообще откуда возникает эта пауза? по несколько секунд для каждого компа... при нынешних скоростях обмена информацией. Тот же пинг проходит за несколько миллисекунд.
Chorniy (2008-12-23 12:20:00) [7]в общем мне необходим список компьютеров, на которых тоже запущено приложение.
Chorniy (2008-12-23 12:19:00) [8]ну например если это будет чат, чтобы знать какой из пользователей тоже его запустил.
Сергей М. (2008-12-23 12:13:00) [9]Стесняюсь спросить, а зачем потребовалось выяснять "наличие клиента на компе в сети" заранее?