NodeJS获取remoteAddress使用的IP

时间:2011-09-25 14:36:07

标签: http networking node.js tcp udp

我有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);

THX。

1 个答案:

答案 0 :(得分:8)

如果未指定主机名,则服务器将从0.0.0.0开始。因此,您可能无法获得理想的结果[阅读Maqurading]。对于HTTP,您可以使用HTTP“主机”标头[强制自HTTP / 1.1],这可能对您的情况有益。

你还可以尝试一下:

socket.address()
  

返回由报告的套接字的绑定地址和端口   操作系统。返回具有两个属性的对象,例如   {“address”:“192.168.57.1​​”,“port”: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);