48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | /*eslint no-console:0*/ | ||
|  | var dns = require('..'); | ||
|  | var dgram = require('dgram'); | ||
|  | 
 | ||
|  | var DNSSERVER = '8.8.8.8'; | ||
|  | 
 | ||
|  | resolveAddress('www.google.com'); | ||
|  | 
 | ||
|  | function resolveAddress(name) { | ||
|  |   var packet = new dns.DNSPacket(); | ||
|  |   packet.header.rd = 1; //make query recursive
 | ||
|  |   packet.question.push(new dns.DNSRecord( | ||
|  |     name, | ||
|  |     dns.DNSRecord.Type.A, 1) | ||
|  |   ); | ||
|  | 
 | ||
|  |   var s = dgram.createSocket('udp4'); | ||
|  |   s.bind(); | ||
|  | 
 | ||
|  |   s.on('listening', function () { | ||
|  |     var buf = dns.DNSPacket.toBuffer(packet); | ||
|  |     s.send(buf, 0, buf.length, 53, DNSSERVER, function (err, bytes) { | ||
|  |       if (err) { | ||
|  |         return console.error('error sending', err); | ||
|  |       } | ||
|  |       console.log('sent request of %d bytes', bytes); | ||
|  |     }); | ||
|  |   }); | ||
|  | 
 | ||
|  |   s.on('message', function (data) { | ||
|  |     console.log('incoming response'); | ||
|  |     var response = dns.DNSPacket.parse(data); | ||
|  |     response.answer.forEach(function (a) { | ||
|  |       console.log('answer type:%s, class:%s, name:%s', | ||
|  |         a.typeName, a.className, a.name, a.address); | ||
|  |     }); | ||
|  |     s.close(); | ||
|  |   }); | ||
|  | 
 | ||
|  |   s.on('end', function () { | ||
|  |     console.log('connection closed'); | ||
|  |   }); | ||
|  | 
 | ||
|  |   s.on('error', function (err) { | ||
|  |     console.error('error', err); | ||
|  |   }); | ||
|  | } |