Skip to content

Instantly share code, notes, and snippets.

@gipsh
Created February 22, 2018 17:37
Show Gist options
  • Save gipsh/cb8d37e2d399936d215ec1f8954ef203 to your computer and use it in GitHub Desktop.
Save gipsh/cb8d37e2d399936d215ec1f8954ef203 to your computer and use it in GitHub Desktop.
sadp send discovery
require 'socket'
MULTICAST_ADDR = "239.255.255.250"
PORT= 37020
MSG = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Probe><Uuid>13A888A9-F1B1-4020-AE9F-05607682D23B</Uuid><Types>inquiry</Types></Probe>"
begin
socket = UDPSocket.open
socket.setsockopt(Socket::IPPROTO_IP, Socket::IP_TTL, [1].pack('i'))
socket.send(MSG, 0, MULTICAST_ADDR, PORT)
ensure
socket.close
end
require 'socket'
require 'ipaddr'
MULTICAST_ADDR = "239.255.255.250"
PORT= 37020
begin
ip = IPAddr.new(MULTICAST_ADDR).hton + IPAddr.new("0.0.0.0").hton
socket = UDPSocket.new
socket.setsockopt(Socket::IPPROTO_IP, Socket::IP_ADD_MEMBERSHIP, ip)
socket.bind(Socket::INADDR_ANY, PORT)
loop do
msg, info = socket.recvfrom(1024)
puts "MSG: #{msg} from #{info[2]} (#{info[3]})/#{info[1]} len #{msg.size}"
end
ensure
socket.close
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment