在环回接口上模拟多播

时间:2011-05-30 21:07:09

标签: ruby networking udp ip

我正在ruby中编写一个应该使用UDP多播的网络应用程序。

我的问题是我想在localhost上运行多个实例以进行测试,但只有在我将套接字绑定到真实网络接口时,多播才有效。

是否有某种方法可以为环回接口启用多播,以便所有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?

1 个答案:

答案 0 :(得分:2)

Solaris允许您在回送设备上使用多播。对于其他操作系统,您可以在发送方(Unix)或接收方(Windows)上启用IP_MULTICAST_LOOP以获得类似的效果。