Google направил меня на этот вопрос при поиске "node.js get server ip" , поэтому давайте дадим альтернативный ответ тем, кто пытается добиться этого на своем сервере node.js программа (может быть в случае оригинального плаката).
В наиболее тривиальном случае, когда сервер связан только с одним IP-адресом, не нужно определять IP-адрес, поскольку мы уже знаем, к какому адресу мы его привязали (например, второй параметр передан в listen()
функция).
В менее тривиальном случае, когда сервер привязан к нескольким IP-адресам, нам может потребоваться определить IP-адрес интерфейса, к которому подключен клиент. И как кратко предложил Tor Valamo, в настоящее время мы можем легко получить эту информацию из подключенного сокета и его свойства localAddress
.
Например, если программа является веб-сервером:
var http = require("http")
http.createServer(function (req, res) {
console.log(req.socket.localAddress)
res.end(req.socket.localAddress)
}).listen(8000)
А если это универсальный TCP-сервер:
var net = require("net")
net.createServer(function (socket) {
console.log(socket.localAddress)
socket.end(socket.localAddress)
}).listen(8000)
При запуске серверной программы это решение обеспечивает очень высокую мобильность, точность и эффективность.
Подробнее см .: