NodeJS获取remoteAddress使用的IP

Posted

技术标签:

【中文标题】NodeJS获取remoteAddress使用的IP【英文标题】:NodeJS get IP used by remoteAddress 【发布时间】:2011-11-24 15:51:30 【问题描述】:

我有 3 个简单的 NodeJS 服务器,使用 NET、HTTP 和 UDP。每个服务器都侦听端口 X,但有多个 IP 地址。当客户端连接到服务器时,我想检索服务器的实际 IP 地址(客户端连接到的 IP,客户端必须写入连接到服务器的 IP)。

var httpService = http.createServer(function(req, res)
   req.getActualServerAddress();
);
httpService.listen(8000);

var netService = net.createServer(function(socket) 
   socket.getActualServerAddress();
);
netService.listen(8001);

var udpService = dgram.createSocket("udp4");
udpService.on("message", function (msg, rinfo)
   rinfo.getActualServerAddress();
);
udpService.bind(8002);

谢谢。

【问题讨论】:

【参考方案1】:

如果不指定主机名,服务器将从 0.0.0.0 开始。所以你可能得不到你想要的结果[阅读 Maqurading]。对于 HTTP,您可以使用 HTTP "Host" 标头 [自 HTTP/1.1 起是强制性的],这可能对您的情况很有帮助。

您仍然可以尝试:

socket.address()

返回套接字报告的绑定地址和端口 操作系统。返回具有两个属性的对象,例如 “地址”:“192.168.57.1​​”,“端口”:62053

这是一个 tcp 示例:

var netService = require('net').createServer(function(socket) 
 address = netService.address();
 console.log("Stream on %j", socket.address());
 console.log("opened server on %j", address);
);
netService.listen(8001);

http 示例:

var httpService = require('http').createServer(function(req, res)
console.log("Stream on %j", req.connection.address());
    res.end("Hi");
);
httpService.listen(8000);

【讨论】:

socket.address() 是我想要的:)。我不知道我怎么会错过:)。 好的...我想我得给你+50。请按要求编写 UDP 和 HTTP 的示例。谢谢。 预计至少有 1 票赞成 :) 开玩笑 :D。无论如何,我将在一两天内向您发送 UDP 和 HTTP 的示例,届时我将从当前的 prod-QA 阶段休息一下。

以上是关于NodeJS获取remoteAddress使用的IP的主要内容,如果未能解决你的问题,请参考以下文章

实践使用nodejs获取用户真实IP?

通过 NodeJS express 仅获取 IPv4 ip

在 NodeJS 中跟踪 IP 地址,接收两个数字

koa2获取用户ip

nodejs 服务器实现区分多客户端请求服务

如何在 apollo 订阅服务器上获取客户端 IP 地址?