LINUX.ORG.RU

UDP: сервером подать сигнал - «Кто в сети?»

 , , ,


0

1

Добрый день всем! Нужна помощь разработчиков которые сами описывали UDP соединения, и знают особенности UDP. Пишу под линукс на С++, т.е. использую sys/socket У меня на данный момент есть 2 консольных приложения(клиент-сервер) , которые могут обмениваться данными с помощью основных комманд для UDP - если один в состоянии слушателя(использую recvfrom), второй в свою очередь должен что-то послать(использую sendto)) и могу манипулировать этими действиями, но возникает проблема если вдруг клиенту нужен будет другой сервер. Т.е. мне нужно будет каждым сервером подавать сигнал на подобии «Кто в сети есть?» с определенным интервалом, а клиенты будут выбирать себе нужного сервера

Каким образом это лучше сделать? Буду очень признателен за примеры, Заранее спасибо

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

winlook38 ★★ ()
Ответ на: комментарий от maxmail

Это вопрос реализации. Вы предлагаете клиент-сервер, а winlook38 предлагает распределенную, децентрализованную структуру.

Все IMHO

Dikar ★★ ()
Последнее исправление: Dikar (всего исправлений: 1)
Ответ на: комментарий от maxmail

Раздавать сигнал сервером (кто в сети) не совсем разумно?

Именно так.

tailgunner ★★★★★ ()
Ответ на: комментарий от maxmail

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

winlook38 ★★ ()
Ответ на: комментарий от maxmail

Сервер слушает, клиент бродкастит, сервер отвечает. Еще можно посмотреть в сторону zeroconf.

arturpub ★★ ()

Почитайте о реализации DHCP или PPPOE. МНого серверов слушает, клиент при включении посылает discovery (обнаружение) пакет, получает стопку ответов и дальше уже принимает решение, что делать. Сервером слать маячки смысла нет, т.к. с увеличением кол.-ва серверов будет большая нагрузка на физический сегмент сети одними широковещательными пакетами (читай broadcast-storm).

nickleiten ★★★ ()

если сервера реально разбросаны по просторам Internet, то IRL broad/multicast не прокатит.

Разумный выход - наподобии IRC когда работающие сервера обмениваются между собой ident/alive пакетами, держат внутре список реально-работающих собратьев и предоставляют его любому клиенту по первому требованию.

Стартовый список клиент берёт из DNS, находит первого «живого», получает от него актуальные сервера и выбирает по вкусу.

MKuznetsov ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.