simple dns lookup over udp

53 views
Skip to first unread message

Joe

unread,
May 23, 2012, 4:19:54 PM5/23/12
to EventMachine
I'm trying the following, but the receive_data is never called, any
idea why?

require "net/dns"
require 'eventmachine'
require 'pp'

class DNSClient < EM::Connection

def initialize(domain,ns)
@domain = domain
@ns = ns
end

def post_init
packet = Net::DNS::Packet.new(@domain)
send_datagram packet, @ns, 53
end

def receive_data data
puts "never gets here"
p = Net::DNS::Packet::parse(data)
end

end

EM.run {
# 216.239.32.10 is google's nameserver. dig @216.239.32.10 www.google.com
works.
EM.open_datagram_socket "0.0.0.0", 0, DNSClient, "www.google.com.",
"216.239.32.10"
}

Carsten Bormann

unread,
May 23, 2012, 6:53:57 PM5/23/12
to eventm...@googlegroups.com
On May 23, 2012, at 22:19, Joe wrote:

> packet = Net::DNS::Packet.new(@domain)
> send_datagram packet, @ns, 53

Where do you get Net::DNS from?

With the net-dns gem, this works much better as

packet = Net::DNS::Packet.new(@domain)
send_datagram packet.data, @ns, 53

Grüße, Carsten

Joe

unread,
May 24, 2012, 12:59:59 AM5/24/12
to EventMachine
Thanks Carsten!

yes it is net-dns gem.  packet.data was the trick!
working great.  thanks.
Joe
Reply all
Reply to author
Forward
0 new messages