【问题标题】:How Do I Send a Broadcast Request to a Node.JS server On My LAN?如何向我的 LAN 上的 Node.JS 服务器发送广播请求?
【发布时间】:2017-07-24 19:44:39
【问题描述】:

我有一个连接到 RGB LED 灯条的 Raspberry Pi。在 Pi 上,是一个托管网页的 Node.JS 服务器,该网页让我为 LED 灯条选择颜色。一切正常。

问题是,我希望能够动态地找到 IP 地址(我不想做静态 IP。我想把这些分发给一些家庭,并且我希望他们能够“正常工作”)加入他们的wifi)。

我想做的是有一个可以在网络上找到树莓派的手机应用程序。我正在考虑这个问题,我记得读过有关 LAN 的广播 IP 地址的信息。我以前从未使用过它们,但似乎是我需要的。该应用程序将启动,在广播中发送一条特制的消息,上面写着“Raspberry Pi 在哪里?” Pi 会回答“我在这里!我在 X 地址!”

我以前从未尝试过使用广播 IP 地址,因此我决定尝试进行概念验证。我在我的 Pi 上启动了一个 Node.JS 服务器,如下所示:

var http = require('http');

var port = 8081;

var server = http.createServer(function(request, response) {
    response.writeHead(200);
    response.end("Pong");
});
server.listen(port, function() {
    console.log((new Date()) + ' Server is listening on port ' + port);
});

然后在我的电脑上,curl 192.168.1.XXX:8081(已知的 IP 地址)和繁荣。预期的反应。

但是curl 192.168.1.255:8081 给我一个502 错误。

根据我在网上阅读的内容,应该是广播地址。我的路由器可能会阻止这个吗?我只是在做一些根本错误的事情吗?

提前致谢。 :)

【问题讨论】:

    标签: node.js ip lan


    【解决方案1】:

    你在做一些根本错误的事情:)

    您不能使用 TCP/HTTP 发送广播消息(请参阅Can I use broadcast or multicast for TCP?),但可以发送 UDP 数据报(请参阅Send Broadcast datagram)。如果您的路由器不过滤这种流量,它应该可以工作。

    许多操作系统都带有一个名为arp-scan 的工具。您可以依靠 ARP(地址解析协议)并使用此工具列出网络上的 IP-MAC 关联。您可以简单地使用属于 Raspberry Pi 的 IP。

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 2019-03-16
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 2019-03-26
      • 2017-08-15
      • 2023-03-30
      • 2014-03-17
      相关资源
      最近更新 更多