我有一个要求,我的 NodeJS http 服务器(在 Windows 上)必须监听主机名而不是 localhost/127.0.0.1。
为此,我需要我的 Windows 机器的完整主机名(包括域名),但我无法获得完整的主机名。
我尝试使用
require('os').hostname()
但它没有给我完整的主机名。
所以我尝试了以下方法:
var dns = require('dns');
var os = require('os');
var hostname = os.hostname();
console.log("Short hostname = ", hostname);
dns.lookup(hostname, function (err, add, fam) {
if (err)
{
console.log("The error = ", JSON.stringify(err));
return;
}
console.log('addr: '+add);
console.log('family: ' + fam);
dns.reverse(add, function(err, domains){
if (err)
{
console.log("The reverse lookup error = ", JSON.stringify(err));
return;
}
console.log("The full domain name ", domains);
});
})
上面的代码工作正常,当我在企业的以太网上时得到以下输出
C:\>node getFullHostname.js
Short hostname = SPANUGANTI
addr: 16.190.58.214
family: 4
The full domain name [ 'spanuganti.abc.xyz.net' ]
但是当我连接到企业的无线网络时,相同的代码不起作用
C:\>node getFullHostname.js
Short hostname = SPANUGANTI
addr: 16.183.204.47
family: 4
The reverse lookup error =
{"code":"ENOTFOUND","errno":"ENOTFOUND","syscall":"getHostByAddr"}
所以需要以下帮助
- 有没有一种简单的方法可以在 Node.js 中获取完整的机器名称(Windows)
- 或者请让我知道我上面的代码有什么问题