Java: определение получающего адреса при получении с MulticastSocket
Я использую MulticastSocket для получения пакетов многоадресной рассылки UDP. Как я могу определить, на какой адрес был отправлен такой пакет? Благодаря предоставленным методам я могу определить только адрес отправителя.
Конечно, я тот, кто устанавливает To-Address при создании сокета прослушивания, но могу ли я быть действительно уверен в этом? Как насчет широковещательных пакетов? Как насчет пакетов, которые каким-то образом оказываются здесь? Я действительно хочу различить, был ли пакет действительно многоадресным.
Спасибо!
Обновление: в настоящее время кажется, что одноадресные пакеты, только что отправленные на этот порт, также попадают в многоадресные сокеты receive():(Привязка к устройствам также не дает мне лучших результатов.
1 ответ
Я немного неясен в деталях, но многоадресный пакет будет отправлен на комбо ip / port, на который вы подписаны (и эта информация будет где-то в пакете), предполагая, что вам удалось получить четкий путь промежуточных маршрутизаторов что понимаю многоадресную рассылку. Если вы хотите убедиться, что многоадресная передача получает от правильного сетевого интерфейса, есть множество функций для привязки его к определенному интерфейсу.
Я не думаю, что у вас есть какой-либо способ узнать, был ли пакет "действительно" многоадресным, то есть кто-то всегда мог подделать его, поскольку в нем нет встроенной защиты.