Задать вопрос
@gvpugachev
Разработчик Delphi, Go, FrontEnd

Как написать UDP сервер работающий без Bind?

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

Как сделать так, чтобы датаграммы приходили всем N запущенным серверам? Отказаться от Bind?
  • Вопрос задан
  • 170 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
jamakasi666
@jamakasi666
Просто IT'шник.
У вас ни разу не широковещался. У вас unicast.
Вам нужен broadcast чтобы вещать на всю свою подсеть.
Другой вариант multicast, в отличии от бродкаста меньше сеть жрать будет.

Ну и сразу можно сделать зарубку что бродкаст пакеты могут отбрасываться маршрутизаторами\роутерами и т.д.

PS Почитал ваш коментарий. Как заметил Армянское Радио никак это ломаетконцепцию. Обходят это другим путем если очень сильно надо.
1) Условно говоря делаете фиксированный порт на СТОРОНЕ_А, на нем слушаете бродкаст.
2) На СТОРОНЕ_Б при запуске шлете бродкаст пакет на этот фиксированный порт сообщая серверу на каком порту слушает пакеты.
3) СТОРОНА_А ловит этот пакет и начинает вещать на порт, аналогично слушает со всех остальных СТОРОН
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg Куратор тега Компьютерные сети
Любые ответы на любые вопросы
Никак. Это нарушает концепцию сокетов.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы