@gvpugachev
Разработчик Delphi, Go, FrontEnd

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы