2017-03-04 10 views
0

私はラズベリーPiをRGB LEDストリップに接続しました。 Piでは、WebページをホストするNode.JSサーバーがあり、そのWebページでLEDストリップの色を選択できます。すべての作品。ブロードキャストリクエストをNode.JSサーバーに送信するにはどうすればよいですか?

問題は、私は動的にIPアドレスを見つけることができるようにしたいと思います(私は静的IPをしたくありません。私はこれらをいくつかの家族に与えたいと思います。私はそれらをwifiに参加させる)。

私がしたいのは、ネットワーク上でラズベリーパイを見つけることができる電話アプリを持つことです。私はこれについて考えていましたが、私は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); 
}); 

その後、私のPCから、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?を参照)が、あなたの代わりに(Send Broadcast datagramを参照)UDPデータグラムを送信することができます。あなたのルータがそのような種類のトラフィックをフィルタリングしないなら、それはうまくいくはずです。

多くのオペレーティングシステムには、arp-scanというツールが付属しています。あなたはARP(Address Resolution Protocol)に頼り、このツールを使ってネットワーク上のIP-MAC関連をリストすることができます。あなたは単にラズベリーパイに属するIPを使うことができます。

関連する問題