Java: определение получающего адреса при получении с MulticastSocket - PullRequest
2 голосов
/ 07 ноября 2008

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

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

Спасибо!

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

1 Ответ

2 голосов
/ 07 ноября 2008

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

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

...