On Fri, 07 Oct 2005 03:14:17 +0400, LeonCrew <29045@users.rsdn.ru> wrote:
> Здравствуйте, SaNTa_RnD, Вы писали:
>
> SNT>Как написать функцию опроса всех компов в сети(широковещательный запрос). Мне нужно, чтобы программа сокет-клиент могла найти самостоятельно др. прогу — сокет-сервер. Как это сделать? Можно даже привести пример прямо здесь...
>
> Это делается на UDP сокетах
>
> Со своей стороны bindишь сокет на какой-то порт (обычно заранее оговоренный) и посылаешь пакет (sendto) на какой-то оговоренный порт с IP адресом получателя INADDR_BROADCAST
>
> Перед всем этим, но после создания сокета, следует произвести небольшую операцию — разрешить сокету broadcast сщщбщения, установить флаг SO_BROADCAST
Возможно, более интересным решением было бы использовать udp multicast для server discovery. Преимущества udp multicast над тупым broadcast:
udp multicast может быть маршрутизирован, т.е. местонахождение сервера не ограничивается сетью хоста.
фильтрация udp multicast может частично или полностью осуществляться железом сетевого адаптера — меньше нагружаешь остальные хосты. Для broadcast фильтрация всегда софтовая в стеке IP/UDP.
--
Maxim YegorushkinPosted via RSDN NNTP Server 1.9