【问题标题】:nodejs - know from which ip address the server makes the getnodejs - 知道服务器从哪个 IP 地址获取
【发布时间】:2014-07-15 09:01:58
【问题描述】:

抱歉,我对网络编程和 nodejs 还很陌生。我正在使用服务器中的节点和本地网络中的一些客户端。

有时我必须通过 get 请求向客户询问数据:

// somewhere inside server.js
function askDataToClient(ip) {

    var options = {
        host: String(ip),
        port: 80,
        path: '/client/read',
        auth: 'username:password'
    };

    var request = http.get(options, function(htres){
        var body = "";
        htres.on('data', function(data) {
            body += data;
        });
        htres.on('end', function() {
            body = JSON.parse(body);
            res.json(body);
            res.end();
        })
        htres.on('error', function(e) {
            // ...
        });
    });
}

我想知道用于调用此 get 请求的服务器 ip。

我知道this answer,但它为我提供了服务器计算机上所有活动的各种网络:

lo0 127.0.0.1
en1 192.168.3.60
bridge0 192.168.2.1

如果我查询客户端 192.168.3.36,我知道它是第二个 ip,192.168.3.60,因为它们在同一个网络上.. 但是如何以编程方式知道它?

【问题讨论】:

    标签: node.js ip


    【解决方案1】:

    您应该可以使用htres.socket.address().address 获取IP。

    【讨论】:

    • 我想将服务器的 IP 地址作为 url 中的一个值传递。比如“ipclient/setserver/1.1.1.1”我知道这听起来很奇怪,但它是一些嵌入式的解决方法不支持 PUT 方法的设备,所以我会在构造 htres 对象之前这样做
    • 没有简单/通用的方法可以知道执行请求之前,因为可能有任意数量的路由/iptables 规则等会影响使用的 IP发送请求。唯一的其他选项是手动设置 localAddress 选项,以便您可以指定用于请求的接口/IP。
    • 有什么我可以使用的解决方法或模式吗?我想用服务器的 ip 通知所有客户端。由于客户端和服务器都会上下波动,因此 dhcp 总是会改变它们
    【解决方案2】:

    查看可用于 HTTP 请求对象的 request.connection.remoteAddress 属性。这表示执行请求的远程主机的地址。

    【讨论】:

      猜你喜欢
      • 2012-10-12
      • 2021-01-14
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 2010-09-22
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      相关资源
      最近更新 更多