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的主要内容,如果未能解决你的问题,请参考以下文章