Я пишу сетевое приложение на ruby, которое должно использовать многоадресную передачу UDP.
Моя проблема в том, что я хочу запустить несколько экземпляров для тестирования на локальном хосте, но многоадресная рассылка работает, только если я привязываю сокет к реальному сетевому интерфейсу.
Есть ли способ включить многоадресную передачу для интерфейса обратной связи, чтобы все 127.0.0.x получали сообщение, которое я отправляю?
В настоящее время я включаю многоадресную рассылку с помощью:
ip = IPAddr.new('234.56.78.9').hton + IPAddr.new('0.0.0.0').hton
socket.setsockopt(Socket::IPPROTO_IP, Socket::IP_ADD_MEMBERSHIP,ip)
#socket.bind '127.0.0.1',1234 ##does not receive multicast :(
socket.bind '0.0.0.0',1234
Кроме того, я заметил, что если я, например, привязать сокет к 127.0.0.4 и отправить сообщение, в пакете IP-адрес источника в любом случае равен 127.0.0.1 ... есть ли способ установить IP-адрес источника, чтобы он показывал тот же IP, к которому я привязал сокет?