Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.08;
Скачать: CL | DM;

Вниз

Как быстро проверить наличие клиента на компе в сети?   Найти похожие ветки 

 
Chorniy   (2008-12-23 12:10) [0]

Я делаю так, но меня не устраивает скорость работы:

1. Создаю список, элементами которого являются объекты TTcpClient. Каждый объект соответствует компьютеру в локальной сети.

2. В цикле вызываю метод TTcpLient.Connect для каждого клиента.

в сетке 20 компов... моей проги на них нет, то есть метод connect завершается неудачно. В итоге получается что основной поток приложения обрабатывает цикл 20-30 сек, что недопустимо.

Нет ли способа побыстрее проверить наличие клиента на компе из сетки?

я конечно думал о отдельном потоке для каждого TTcpClient, но почему то мне кажется что это некорректно ))) и можно сделать проще.


 
Сергей М. ©   (2008-12-23 12:13) [1]

Стесняюсь спросить, а зачем потребовалось выяснять "наличие клиента на компе в сети" заранее ?


 
Chorniy   (2008-12-23 12:19) [2]

ну например если это будет чат, чтобы знать какой из пользователей тоже его запустил.


 
Chorniy   (2008-12-23 12:20) [3]

в общем мне необходим список компьютеров, на которых тоже запущено приложение.


 
Chorniy   (2008-12-23 12:23) [4]

и вообще откуда возникает эта пауза? по несколько секунд для каждого компа... при нынешних скоростях обмена информацией. Тот же пинг проходит за несколько миллисекунд.


 
Chorniy   (2008-12-23 12:31) [5]


> Стесняюсь спросить, а зачем потребовалось выяснять "наличие
> клиента на компе в сети" заранее


хех.. скорее всего этот вопрос вызван неправильной идеологией моего решения)))) как тогда при запуске многих клиент-серверных приложений, они мгновенно (менее секунды) определяют компьютеры на которых клиент запущен?


 
Сергей М. ©   (2008-12-23 12:31) [6]


> Chorniy


Не так это делается обычно.
Либо чат должен быть централизованным (т.е. иметь выделенный сервер-координатор) либо заинтересованный клиент посылает бродкаст-сообщение а-ля "Есть кто живой ?" и все "живые" обязаны на него ответить а-ля "Я, такой-то, жив по такому-то адрес:порт"


> откуда возникает эта пауза?


Из-за соответствующего дифолтного коннект-таймаута в winsock


 
Chorniy   (2008-12-23 12:55) [7]


> бродкаст-сообщение


вот это мне и нужно. с помощью чего ето реализуется в делфи? просто название темы куда копать)))


 
Сергей М. ©   (2008-12-23 13:02) [8]

С помощью практически любого компонента, использующего в качестве транспортного протокол UDP.


 
Chorniy   (2008-12-23 13:06) [9]

ок, спс сергей. идею понял..ушел реализовывать))



Страницы: 1 вся ветка

Текущий архив: 2009.02.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
2-1230194832
Xmen
2008-12-25 11:47
2009.02.08
Время ожедания сервера


2-1229951317
девушка
2008-12-22 16:08
2009.02.08
Как организовать работу с БД через хранимые процедуры?


3-1214377052
Nic
2008-06-25 10:57
2009.02.08
Роли пользователей sysusers


2-1229759537
kyn66
2008-12-20 10:52
2009.02.08
Записи Foxpro помеченные на удаление


2-1230379165
DoKi
2008-12-27 14:59
2009.02.08
strtofloat - перевод строки в дробное число