【问题标题】:In Node.js (running on Windows) how to get the domain name在 Node.js(在 Windows 上运行)如何获取域名
【发布时间】:2012-06-27 12:08:07
【问题描述】:

我的 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"}   

所以需要下面的帮助

  1. 有没有一种简单的方法可以在 Node.js 中获取完整的机器名称(Windows)
  2. 或者请告诉我上面的代码有什么问题

【问题讨论】:

    标签: node.js dns


    【解决方案1】:

    服务器不监听主机名,它们监听 IP 地址。您永远不应依赖外部 DNS 的内容来确定绑定位置。

    最简单的解决方案是将其绑定到INADDR_ANY 地址,该地址在数值上等同于0.0.0.0

    这将允许在 any 接口上进行查询,包括环回。

    【讨论】:

    • 我想要拥有完整机器的原因是因为以下原因:在我们的暂存环境中,我的服务器正在侦听 localhost 并且客户端正在使用机器的 IP 地址和端口连接以访问我的服务器。由于某种原因,我不得不重新启动我的服务器,到那时机器的 IP 已经改变了。现在我必须通知所有客户端 IP 已更改,他们必须更改代码才能连接到我的服务器。那么绑定到 0.0.0.0 会解决这个问题吗?
    • @Chary 这里一定有些混乱 - 如果您在 127.0.0.1 上监听,那么远程客户端无法连接,只有在同一台机器上运行的客户端才能连接。
    【解决方案2】:

    你不需要完整的主机名来监听,你实际上需要你的 IP 地址。查看os.networkInterfaces() 函数。

    【讨论】:

      猜你喜欢
      • 2013-02-14
      • 2011-09-18
      • 2012-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-07
      • 1970-01-01
      相关资源
      最近更新 更多