Node.js Как получить IP-адрес http-сервера, прослушивающего определенный порт

#node.js

#node.js

Вопрос:

У меня есть следующий очень простой код HTTP-сервера, который прослушивает порт 8000. Как определить IP-адрес сервера, можно ли его получить из переменной ‘server’? Я работаю над приложением, в котором мне нужно автоматически отправлять информацию о сервере (ip, порт и т. Д.) В хранилище redis.

Я новичок в 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....");
 

Ответ №1:

Используйте следующее:

 server.address()
 

Который регистрирует что-то вроде:

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

Чтобы записать IP-адрес вашего сервера в консоль, используйте:

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

Комментарии:

1. Это правильный ответ, поскольку address это метод, а не свойство

2. Я просто получаю это: «ReferenceError: сервер не определен»

3. На самом деле, address() происходит от net.Server , который является суперклассом http.Server .

Ответ №2:

Предполагая, что вам нужен адрес, к которому привязан ваш сервер, вы можете использовать server.address.address для получения IP-адреса, к которому привязан сервер. Аналогично, вы можете использовать server.address.port для получения номера порта, к которому привязан сервер.

От: http://nodejs.org/api/net.html#net_server_address .

Комментарии:

1. Он не работает, он возвращает IP-адрес 0.0.0.0. Есть идеи? {«адрес»: «0.0.0.0», «семейство»: «IPv4», «порт»: 8000}

2. От: nodejs.org/api /. … Если вы не передадите имя хоста для его привязки, оно будет привязано по умолчанию к 0.0.0.0. Поскольку вы указываете только порт, он будет привязан к 0.0.0.0 по умолчанию, и возвращаемый объект с server.address будет правильным.

3. См. Ответ Алистера Макдональда: server.address().address, а не server.address.address

4. есть ли какой-нибудь способ получить общедоступный IP-адрес?

5. Если IP-адрес не задан, то IP-адрес будет установлен по умолчанию узлом js. Вы можете установить IP-адрес с помощью этих: server.listen(8888,'127.0.0.1', function(){})

Ответ №3:

 req.connection.remoteAddress
req.connection.remotePort
req.connection.localAddress
req.connection.localPort
 

Комментарии:

1. пожалуйста, добавьте объяснение, поскольку ваше сообщение попало в категорию «сообщение низкого качества»