Java: определение получающего адреса при получении с MulticastSocket

StackOverflow https://stackoverflow.com/questions/271800

Вопрос

Я использую MulticastSocket для получения пакетов UDP Multicast. Как я могу определить, на какой адрес был отправлен такой пакет? С помощью предоставленных методов я могу определить только адрес отправителя.

Конечно, я тот, кто устанавливает To-Address при создании сокета прослушивания, но могу ли я быть действительно уверен в этом? Как насчет широковещательных пакетов? Как насчет пакетов, которые каким-то образом оказываются здесь? Я действительно хочу различить, действительно ли пакет был ДЕЙСТВИТЕЛЬНО многоадресным.

Спасибо!

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

Это было полезно?

Решение

Я немного неясен в деталях, но многоадресный пакет будет отправлен на комбо ip / port, на которое вы подписаны (и эта информация будет где-то в пакете), при условии, что вам удалось получить четкий путь промежуточных маршрутизаторов, которые понимают многоадресную рассылку. Если вы хотите убедиться, что многоадресная передача получает от правильного сетевого интерфейса, есть множество функций, чтобы связать ее с определенным интерфейсом.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top