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);
 | |
|   });
 | |
| }
 |