module SSDP
Constants
- MCAST_HOST
- MCAST_PORT
Public Class Methods
send_msearch(st, mx, handler = nil)
click to toggle source
# File lib/ssdp.rb, line 131 def self.send_msearch(st, mx, handler = nil) socket = UDPSocket.new socket.setsockopt(:IPPROTO_IP, :IP_MULTICAST_TTL, 1) payload = "M-SEARCH * HTTP/1.1\r\n" \ "HOST: #{MCAST_HOST}:#{MCAST_PORT}\r\n" \ "MAN: \"ssdp:discover\"\r\n" \ "MX: 3\r\n" \ "ST: ssdp:all\r\n" \ "\r\n" socket.send(payload, 0, MCAST_HOST, MCAST_PORT) start = Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) fds = [socket] lst = [] while true cur = Process.clock_gettime(Process::CLOCK_MONOTONIC, :second) if (cur - start) >= mx break end if ios = select(fds, [], [], 1) data, addr = socket.recvfrom(4096) ssdp_header = SsdpHeader.new HttpHeader.read(data.chomp) if handler handler.call(ssdp_header) end lst << ssdp_header end end socket.close return lst end