typescriptbeginner
DNS Lookup and Resolution
Perform DNS lookups, resolve hostnames to IP addresses, and query DNS records using Node.js dns module.
typescriptPress ⌘/Ctrl + Shift + C to copy
import dns from 'dns';
import { promisify } from 'util';
const resolve4 = promisify(dns.resolve4);
const resolve6 = promisify(dns.resolve6);
const resolveMx = promisify(dns.resolveMx);
const resolveTxt = promisify(dns.resolveTxt);
const resolveCname = promisify(dns.resolveCname);
const lookup = promisify(dns.lookup);
const reverse = promisify(dns.reverse);
async function dnsInfo(hostname: string) {
console.log(`\nDNS info for: ${hostname}`);
console.log('='.repeat(40));
try {
const { address, family } = await lookup(hostname);
console.log(`Lookup: ${address} (IPv${family})`);
} catch (e) { console.log('Lookup failed'); }
try {
const ipv4 = await resolve4(hostname);
console.log(`A records: ${ipv4.join(', ')}`);
} catch (e) { console.log('No A records'); }
try {
const mx = await resolveMx(hostname);
mx.sort((a, b) => a.priority - b.priority);
mx.forEach(r => console.log(`MX: ${r.priority} ${r.exchange}`));
} catch (e) { console.log('No MX records'); }
try {
const txt = await resolveTxt(hostname);
txt.forEach(r => console.log(`TXT: ${r.join('')}`));
} catch (e) { console.log('No TXT records'); }
}
async function main() {
await dnsInfo('google.com');
await dnsInfo('github.com');
// Reverse lookup
try {
const hostnames = await reverse('8.8.8.8');
console.log(`\nReverse 8.8.8.8: ${hostnames.join(', ')}`);
} catch (e) { console.log('Reverse lookup failed'); }
}
main();Use Cases
- Network diagnostics tools
- Email domain verification
- Service discovery
Tags
Related Snippets
Similar patterns you can reuse in the same workflow.
typescriptadvanced
TCP Server and Client with Net Module
Build TCP server and client pairs using Node.js net module with connection pooling and message framing.
Best for: Custom protocol implementation
#nodejs#tcp
typescriptadvanced
Node.js Worker Threads for Parallel Processing
Use Worker Threads to run CPU-intensive tasks in parallel without blocking the event loop.
Best for: CPU-intensive data processing without blocking
#nodejs#worker-threads
typescriptintermediate
Node.js Stream Pipeline with Transform
Build efficient data processing pipelines using Node.js streams for large file handling.
Best for: Processing large CSV files without loading into memory
#nodejs#streams
typescriptintermediate
TypeScript Typed Event Emitter
Create type-safe event emitters in Node.js with full TypeScript support and autocomplete.
Best for: Type-safe pub/sub communication between modules
#nodejs#events