我有一个Raspberry Pi连接到RGB LED灯条。在Pi上,是一个托管网页的Node.JS服务器,该网页允许我为LED条带选择一种颜色。一切正常。
问题是,我希望能够动态找到IP地址(我不想做静态IP。我想把它们交给某个家庭,我希望他们能够#34;只是工作"一旦我加入他们的wifi)。
我想要的是拥有一个可以在网络上找到Raspberry Pi的手机应用程序。我正在考虑这个,我记得读过有关LAN的广播IP地址。我之前从未使用它们,但似乎是我需要的。该应用程序将启动,在广播上发送一条特制的消息,其中显示" Raspberry Pi在哪里?"而Pi会回答#34;我来了!我在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
错误。
从我在线阅读的内容来看,应该是广播地址。我的路由器可能会阻止这个吗?我只是做了一些根本错误的事情吗?
提前致谢。 :)
答案 0 :(得分:1)
你做了一些根本错误的事情:)
您无法使用TCP / HTTP发送广播消息(请参阅Can I use broadcast or multicast for TCP?),但您可以发送UDP数据报(请参阅Send Broadcast datagram)。如果你的路由器没有过滤那种流量,它应该可以工作。
许多操作系统都附带了一个名为arp-scan
的工具。您可以依赖ARP(地址解析协议)并使用此工具列出网络上的IP-MAC关联。您可以简单地使用属于Raspberry Pi的IP。