Sunday, September 06, 2009

Ruby UDP Broadcast

require "socket"
require "timeout"

port = ARGV[1] || 'echo'
sock = UDPSocket.open

sock.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)

begin
  sock.send('message', 0, '<broadcast>', port)
  timeout(5) {
    loop do
      msg, addr = sock.recvfrom(20)
      p addr
    end
  }
rescue TiemoutError
  
end
sock.close

No comments: