![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск сервера в подсети класса C
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 адрес... Думаю, что скорость поиска сервера будет близка к теоритическому максимуму.