Невозможно привязать к многоадресному адресу (Windows) - PullRequest
3 голосов
/ 26 мая 2011

Я пытаюсь написать приложение, которое прослушивает несколько групп многоадресной рассылки с использованием сокетов Windows.

Проблема, с которой я сталкиваюсь, заключается в том, что при попытке привязать сокет, если я пытаюсь привязать адрес группы многоадресной рассылки и порт, это не удается с помощью WSAEADDRNOTAVAIL. Если я вместо этого свяжусь с INADDR_ANY и портом, то я все равно смогу получать другой несвязанный трафик, предназначенный для того же порта.

Когда я реализовал то же самое в Linux, у меня не было проблем с привязкой к адресу многоадресной рассылки (фактически, я видел, что он рекомендовал несколько мест, чтобы избежать получения несвязанного трафика для порта).

Это просто недоступно для сокетов Windows? Я предполагаю, что мог бы сам фильтровать трафик, используя WSARecvFrom и заглядывая в заголовки, но я бы предпочел простое решение, если таковое существует.

Кроме того, это работает на Windows Server 2008.

1 Ответ

2 голосов
/ 02 июня 2011

Хотя doc для bind () не говорит, что это не поддерживается, в комментариях говорится:

Для многоадресных операций предпочтительным методом является вызовФункция связывания, чтобы связать сокет с локальным IP-адресом, а затем присоединиться к многоадресной группе ....

Может быть, эта схема даст лучшие результаты?

...