Я реализовал процесс обнаружения сети, который использует многоадресные сообщения. Позволяет обнаруживать конкретные устройства с любым ip-адресом, подключенным к одному сегменту.
Клиент A отправляет многоадресные сообщения, запрашивая других Клиентов. Другие клиенты отвечают многоадресным сообщением «Я здесь ...». В основном это работает нормально.
Но есть один случай, который доставляет мне неприятности.
Client A Client B
192.168.2.5 192.168.2.5
| |
\__________ /
>>>
UDP Multicast Message:
Source: 192.168.2.5 | Destination: 224.0.0.150
Может возникнуть совпадение: клиент A, который отправляет многоадресное сообщение, и клиент B одновременно прослушивают один и тот же IP-адрес. В этом случае адрес источника пакета UDP совпадает с IP-адресом клиента назначения. Таким образом, приложение на клиенте B не получает многоадресных сообщений.
Полагаю, что многоадресное сообщение с такими же сообщениями блокируется и сбрасывается в ip-стек. Есть ли способ (настройки сокета) получить его в любом случае.