2014-06-24 191 views
7

我有一個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...."); 

回答

2

假設你希望你的服務器被綁定到地址,就可以使用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 –

9

使用以下命令:

server.address() 

哪些日誌是這樣的:

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

要登錄服務器的IP到控制檯,使用:

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

這是正確的答案,因爲'address'是一個方法,而不是一個屬性 – divillysausages