From: Daemon Le Date: 2004-05-20T16:43:49+09:00 Subject: Multicasting with Ruby? Hi, I'm trying to "listen" on a multicast using Ruby. After trolling the news groups and "google", I was able to find a rudimentary set of code in my attempt to listen on multicasting, but it doesn't quite work and I don't know why? Does anyone know of good resources (webpage or book) for multicasting with Ruby? Any help would be appreciated. Here's the sample code that "semi" works... --- begin ------------------------------------ require 'socket' port = 1212 addr = '228.5.6.8' host = Socket.gethostname maddr = addr.split('.').collect! { |b| b.to_i }.pack('CCCC') mreq = maddr + Socket.gethostbyname(host)[3] sock = UDPSocket.new sock.setsockopt(Socket::IPPROTO_IP, Socket::IP_ADD_MEMBERSHIP, mreq) sock.bind(host, port) sock.connect(host, port) # Check send ... sock.send('Hello', 0, addr, port) sock.send('World', 0, addr, port) # Check listen ... count=0 5.times { count += 1 p "COUNT = #{count}" p sock.recvfrom(8) } sock.setsockopt(Socket::IPPROTO_IP, Socket::IP_DROP_MEMBERSHIP, mreq) exit( 0 ) --- end -------------------------------------- The "Check send" works just fine to send into the multicast address. I check this while listening with tcpdump (i.e., tcpdump 'ip multicast and src port 1212 and host 228.5.6.8'). But I'm unable to pick up on the "Check listen" part. It just basically hangs with "COUNT = 1" and waits forever even though I can clearly see packets being transmitted over the multicast address in question. FYI. I'm starting to look at the "rb_spread" module, but I would rather try to do this without first... - Daemon