Ruby UDP Multicasting Binding Insanity

I'm writing a gem which binds multiple sockets to the same UDP multicast port, basically like so..

    socket = UDPSocket.new     socket.setsockopt( Socket::SOL_SOCKET, Socket::SO_REUSEPORT, [1].pack("i_") )     socket.setsockopt(Socket::IPPROTO_IP, Socket::IP_ADD_MEMBERSHIP, addresses)     socket.bind(Socket::INADDR_ANY, port)     data, meta = socket.recvfrom 1024

..which is working fine.. in OS X. But no love on my Solaris 10 x64 box. The problem? AFAICT, the available options come straight from the platforms C setsockopt implementation, which is platform dependent, and SO_REUSEPORT isn't defined on Solaris. I haven't gotten to Windows yet but I'm guessing I'll have the same issue.

So, it seems that Ruby's socket library is a bit fubar in that Socket's constants..

    irb(main):008:0> Socket.constants.sort.each do |c| p c; end

..vary by platform. Anyone have a Better Way of binding twice (or more) to the same UDP multicast port--or doing any low-level socket stuff--in a cross-platform-sane manner?

Preston