Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск сервера в подсети класса C


Страницы:   1 2

Unknown ©   (2003-12-30 12:18:00) 

Человеки!
Помогите решить проблему:
Есть подсеть класса C. Нужно найти в ней сервер.
Перебор всей подсети занимает много времени (синхронный сокет).
Каким образом можно повысить скорость его работы?


Sha   (2004-01-02 16:32:00) [1]

Удалено модератором


Rouse_   (2004-01-02 12:33:00) [2]

Удалено модератором


Sha   (2004-01-02 11:22:00) [3]

Удалено модератором


Rouse_   (2004-01-01 14:31:00) [4]

и забыл

FSockAddr: TSockAddrIn;
...

FSockAddr.sin_addr.S_addr := INADDR_BROADCAST;


у клиента...


Rouse_   (2004-01-01 14:28:00) [5]

Перед отправкой броадкаст датаграммы первоначально сделай

Option := True;
SetSockOpt(FSocket, SOL_SOCKET, SO_BROADCAST, PChar(@Option), SizeOf(Option));


А после этого смело шли на 255.255.255.255

Желаю успехов в новом году


UnKnown   (2004-01-01 13:08:00) [6]

Большое спасибо за дельный совет.
Сервер находится буквально сразу.
Только получается одна фигня: если отправить датаграмму по 255.255.255.255, то она вообще не доходит.
Я решил эту проблему перебором первого байта от 1 до 255, исключая 127. Так как при маске 127.255.255.255 функция recvfrom() вешает программу. (Она ждет ответа, хотя сервер на 127.0.0.1 не запущен. Не пойму почему функция sendto не возвращает ошибку).

Может кто-нибудь поможет с этой фигней справится, хотя меня устраивает и этот вариант, но все-таки как-то несолидно.

Хотелось бы узнать почему так происходит.


Alex Konshin   (2004-01-01 04:06:00) [7]

А ты поищи, тут этот вопрос почти раз в день задают.


UnKnown   (2004-01-01 00:51:00) [8]

Спасибо за абстрактный ответ.
Где можно подробнее узнать про "посылку броадкастом UDP".
Подскажи адресок.


Digitman   (2003-12-31 11:37:00) [9]


> просил на вопрос ответить


тебе и ответ был : никак, если режим транспорта синхронный и делается твой "перебор" в одном-единственном кодовом потоке

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

вопрос-то был абстрактный ! перебор перебору - рознь)


Alex Konshin   (2003-12-31 11:01:00) [10]

Выбран неправильный подход.
Посылай броадкастом UDP и пусть сервер сам отвечает.


UnKnown   (2003-12-31 10:54:00) [11]

Удалено модератором
Примечание: Как ты и сказал, не будем засорять ...


Digitman   (2003-12-30 15:58:00) [12]


> Комп ответить быстрее, конечно, не может


начнем с того, что отвечает не "комп", а цепочка ПО, состоящая из прикладного и системного уровня


Sha   (2003-12-30 13:42:00) [13]

Удалено модератором
Примечание: Оффтоп...


Verg   (2003-12-30 13:40:00) [14]


> Unknown (30.12.03 13:14) [7]
> Комп ответить быстрее, конечно, не может (хотя если есть
> нормальный админ, то это спорный вопрос). А вот кто мешает
> коннектиться асинхронно
.


Никто не мешает.
А в чем вопрос тогда вообще? Я не понял.

Или думаешь, что аснихронный или неблокирующий режим сокета - это "нестандартный подход"?
:)


Unknown   (2003-12-30 13:14:00) [15]

Комп ответить быстрее, конечно, не может (хотя если есть нормальный админ, то это спорный вопрос). А вот кто мешает коннектиться асинхронно. Пропускная способность сети сдесь ни при чем.
Я не думаю, что парочка пакетов не может загрузить 100 Mb сеть.


Sha   (2003-12-30 13:12:00) [16]

Digitman © (30.12.03 13:04) [4]

Как я понял, автору надо перебрать все компы подсети
как можно быстрее, а не ускорить ответ отдельного компа.


Rouse_   (2003-12-30 13:08:00) [17]

> [3] Unknown (30.12.03 13:00)
Оффтопик или нет - это решает модератор...

По сабжу:
Обычно поиск сервера решается посылкой броадкаст датаграммы на которую сервер должен ответить...
Если этот способ не подходит - читай Digitman © (30.12.03 12:31)

С Наступающим...


Digitman   (2003-12-30 13:04:00) [18]


> про большое время ответа отдельно взятого компа


офф-топик, говоришь ?

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


Unknown   (2003-12-30 13:00:00) [19]

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


Verg   (2003-12-30 12:44:00) [20]


> Каким образом можно повысить скорость его работы?


Создать 253 потока, в каждом по сокету. Каждый поток проверит свой IP адрес... Думаю, что скорость поиска сервера будет близка к теоритическому максимуму.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо