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