Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.02.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.005 c
3-1214304735
Roberto
2008-06-24 14:52
2009.02.08
Выбор метода реализации отчетов


2-1229938772
poops89
2008-12-22 12:39
2009.02.08
как перенести тексти с Edit в TSeSkinEdit


13-1122370594
Tab
2005-07-26 13:36
2009.02.08
vcl программы на delphi 8 for .net?


2-1230583229
AlexF
2008-12-29 23:40
2009.02.08
ComboBox


2-1230109962
NieL
2008-12-24 12:12
2009.02.08
Траблы с формой (Width)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский