NodeJS获取remoteAddress使用的IP

xpe*_*int 3 networking udp tcp http node.js

我有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);
Run Code Online (Sandbox Code Playgroud)

谢谢.

Pus*_*jee 9

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

你还可以尝试一下:

socket.address()
Run Code Online (Sandbox Code Playgroud)

返回操作系统报告的套接字的绑定地址和端口.返回具有两个属性的对象,例如{"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);
Run Code Online (Sandbox Code Playgroud)

http的示例:

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