Node.js如何获取侦听特定端口的http服务器的IP地址

问题描述:

我有一个HTTP服务器的以下非常基本的代码,它正在端口8000上侦听。如何确定服务器的IP地址,是否可以从'服务器'变量检索?我正在一个应用程序,我需要自动发送服务器信息(IP,端口等..)到redis商店。Node.js如何获取侦听特定端口的http服务器的IP地址

我是新来的node.js,感谢您的帮助

var http = require("http"); 
var server = http.createServer(function(request, response) { 
  response.writeHead(200, {"Content-Type": "text/html"}); 
  response.write("Hello!!!"); 
  response.end(); 
}); 

server.listen(8000); 
console.log("Server is listening...."); 

假设你希望你的服务器被绑定到地址,就可以使用server.address.address来获得IP地址服务器是绑定的。同样,您可以使用server.address.port来获取服务器绑定的端口号。

来自:http://nodejs.org/api/net.html#net_server_address

+0

它不工作就返回0.0.0.0 ip地址。任何想法? {“address”:“0.0.0.0”,“family”:“IPv4”,“port”:8000} – Sohaib

+0

From:http://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback。如果你没有传递一个主机名来绑定它,它将默认绑定到0.0.0.0。由于您只指定端口,因此默认情况下它将绑定到0.0.0.0,并且server.address中返回的对象将是正确的。 –

+0

请参阅Alistair MacDonald的回答:server.address()。address,not server.address.address –

使用以下命令:

server.address() 

哪些日志是这样的:

{ address: '0.0.0.0', family: 'IPv4', port: 8080 } 

要登录服务器的IP到控制台,使用:

console.log(server.address().address); 
+1

这是正确的答案,因为'address'是一个方法,而不是一个属性 – divillysausages