【问题标题】:Simulating multicasting on loopback interface在环回接口上模拟多播
【发布时间】:2011-09-05 01:30:28
【问题描述】:

我正在用 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 相同?

【问题讨论】:

  • 127.0.0.255 或 127.255.255.255 是否有效?

标签: ruby networking udp ip


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-15
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多