(譯著,Windows 版本的NodeJS 暫時(shí)沒有實(shí)現(xiàn)DNS 功能) 使用require('dns')來(lái)訪問(wèn)這個(gè)模塊。
下面是一個(gè)先解析'www.google.com',然后將解析出來(lái)的IP 地址再做反向解析。
var dns = require('dns');
dns.resolve4('www.google.com', function (err, addresses) {
if (err) throw err;
console.log('addresses: ' + JSON.stringify(addresses));
addresses.forEach(function (a) {
dns.reverse(a, function (err, domains) {
if (err) {
console.log('reverse for ' + a + ' failed: ' +
err.message);
} else {
console.log('reverse for ' + a + ': ' +
JSON.stringify(domains));
}
});
});
dns.lookup(domain, family=null, callback)
將一個(gè)域名(例如. 'google.com')解析成為找到的第一個(gè)A(IPv4)或者AAAA(IPv6)記錄。 回調(diào)函數(shù)的有(err, address, family)這三個(gè)參數(shù)。address 參數(shù)是一個(gè)代表IPv4或IPv6的地址的字符串。family 是 一個(gè)表示地址版本的整形數(shù)字4或6(并不一定是解析域名時(shí)傳遞的數(shù)字)。
dns.resolve(domain, rrtype='A', callback)
將參數(shù)domain(比如'google.com')按照參數(shù)rrtype 所指定數(shù)據(jù)類型解析到一個(gè)數(shù)組中。合法的類型為A(IPV4地 址),AAAA(IPV6地址),MX(mail exchange records),TXT(text records),SRV(SRV records),和PTR(used for reveres IP lookups)。
回調(diào)函數(shù)(callback)接受兩個(gè)參數(shù):err 和address。參數(shù)address 中的每一項(xiàng)根據(jù)記錄類型(record type)分割,在 下面lookup 方法的文檔里有詳細(xì)的解釋。 當(dāng)有錯(cuò)誤發(fā)生時(shí),參數(shù)err 的內(nèi)容是一個(gè)Error 對(duì)象的實(shí)例,err 的errno 屬性是下面錯(cuò)誤代碼列表中的一個(gè),err 的message 屬性是一個(gè)用英語(yǔ)表述的錯(cuò)誤解釋。
dns.resolve4(domain, callback)
與dns.resolve()類似,但是僅對(duì)IPV4地址進(jìn)行查詢(A records)。addresses 是一個(gè)IPV4地址數(shù)組(例如['74.125.79.104', '74.125.79.105', '74.125.79.106'])
dns.resolve6(domain, callback)
除了這個(gè)函數(shù)是對(duì)IPV6地址的查詢外與dns.resolve4()很類似(一個(gè)AAAA 查詢)。
dns.resolveMx(domain, callback)
與dns.resolve()很類似.但是僅做mail exchange 查詢(MX 類型記錄)。 回調(diào)函數(shù)的參數(shù)address 是一個(gè)MX 類型記錄的數(shù)組,每個(gè)記錄有一個(gè)優(yōu)先級(jí)屬性和一個(gè)交換屬性(類似[{'priority': 10, 'exchange': 'mx.example.com'},...])
dns.resolveTxt(domain, callback)
與dns.resolve()很相似,但是僅可以進(jìn)行text 查詢(TXT 記錄).地址是一個(gè)對(duì)于域來(lái)說(shuō)有效的text 記錄數(shù)組(類似 ['v=spf1 ip4:0.0.0.0 ~all'])
dns.resolveSrv(domain, callback)
與dns.resolve()很類似,但僅是只查詢service 記錄(srv records)。地址是一個(gè)對(duì)于域來(lái)說(shuō)有效的SRV 記錄的數(shù)組, SRV 記錄的屬性有優(yōu)先級(jí)、權(quán)重、端口, 名字( 例如[{'priority': 10, {'weight': 5, 'port': 21223, 'name':'service.example.com'}, ...])
dns.reverse(ip, callback)
反向解析一個(gè)IP 地址到一個(gè)域名數(shù)組。 callback 參數(shù)有兩個(gè)參數(shù)(err,domains)。 如果發(fā)生了錯(cuò)誤,err 為Error 對(duì)象的實(shí)例。 每個(gè)DNS 查詢可以返回如下錯(cuò)誤代碼:
1 超時(shí)、返回SERVFAIL 或者類似的錯(cuò)誤
2 返回內(nèi)容里有亂碼
3 域名不存在
4 域名存在但是沒有所請(qǐng)求的查詢類型的數(shù)據(jù)
5??? 處理過(guò)程中內(nèi)存溢出
6??? 查詢語(yǔ)句異常
更多建議: