2017-03-04 84 views
0

我有一個Raspberry Pi連接到一個RGB LED燈帶。在Pi上,是一個託管網頁的Node.JS服務器,並且該網頁允許我爲LED條帶選擇一種顏色。所有的工作。如何向我的局域網上的Node.JS服務器發送廣播請求?

問題是,我希望能夠動態地找到IP地址(我不想做靜態IP地址,我想把它們分發給一些家庭,我希望他們「一起工作」一次我加入他們的無線網絡)。

我想要做的是有一個電話應用程序,可以在網絡上找到樹莓派。我正在考慮這個問題,並且我還記得有關LAN的廣播IP地址的信息。我從來沒有用過它們,但似乎是我需要的。該應用程序將啓動,發送特別製作的廣播消息,說「樹莓派在哪裏?」 Pi會回答:「我在這裏!我在X地址!」

我從來沒有嘗試過使用廣播IP地址,所以我決定嘗試一個概念驗證。我開始了,看起來像這樣在我的皮使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錯誤。

從我在線閱讀的內容來看,應該是廣播地址。我的路由器可能會阻止這個嗎?我只是在做一些根本性錯誤?

在此先感謝。 :)

回答

1

你正在做一些根本性的錯誤:)

使用TCP/HTTP(見Can I use broadcast or multicast for TCP?)不能發送廣播消息,但你可以發送一個UDP數據報(見Send Broadcast datagram)來代替。如果您的路由器不過濾那種流量,它應該可以工作。

許多操作系統都帶有一個名爲arp-scan的工具。您可以依靠ARP(地址解析協議)並使用此工具列出網絡上的IP-MAC關聯。您可以簡單地使用屬於Raspberry Pi的IP。

相關問題