【问题标题】:NodeJS get IP used by remoteAddressNodeJS获取remoteAddress使用的IP
【发布时间】: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);

谢谢。

【问题讨论】:

    标签: http networking node.js tcp udp


    【解决方案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 阶段休息一下。
    猜你喜欢
    • 1970-01-01
    • 2014-10-05
    • 1970-01-01
    • 2020-12-22
    • 2018-11-24
    • 1970-01-01
    • 2018-04-30
    • 2017-06-10
    • 1970-01-01
    相关资源
    最近更新 更多