2017-03-04 3 views
0

Ich habe einen Raspberry Pi an einen RGB-LED-Streifen angeschlossen. Auf dem Pi befindet sich ein Node.JS-Server, der eine Webseite hostet, und auf dieser Webseite kann ich eine Farbe für den LED-Streifen auswählen. All das funktioniert.Wie sende ich eine Broadcast-Anfrage an einen Node.JS-Server in meinem LAN?

Das Problem ist, ich möchte in der Lage sein, die IP-Adresse dynamisch zu finden (Ich möchte nicht statische IPs tun. Ich möchte diese zu einer Familie geben, und ich will sie "nur" einmal arbeiten Ich schließe mich ihnen zum Wifi) an.

Was ich möchte, ist eine Telefon-App, die den Raspberry Pi im Netzwerk finden kann. Ich dachte darüber nach, und ich erinnerte mich daran, über Broadcast-IP-Adressen für das LAN gelesen zu haben. Ich habe sie nie zuvor benutzt, scheint aber das zu sein, was ich brauche. Die App wird gestartet und sendet eine speziell gestaltete Nachricht mit folgendem Inhalt: "Wo ist der Raspberry Pi?" und der Pi würde antworten "Hier bin ich! Ich bin bei X-Adresse!"

Ich habe noch nie versucht, eine Broadcast-IP-Adresse zu verwenden, also habe ich mich für einen Proof of Concept entschieden. Ich begann einen Node.JS-Server auf meinem Pi, die wie folgt aussieht:

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); 
}); 

Dann von meinem PC, curl 192.168.1.XXX:8081 (die bekannten IP-Adresse) und Boom. Erwartete Antwort

Aber curl 192.168.1.255:8081 ruft mir einen 502 Fehler.

Von dem, was ich online lese, sollte das die Broadcast-Adresse sein. Blockiert mein Router das wahrscheinlich? Mache ich gerade etwas grundsätzlich falsch?

Vielen Dank im Voraus. :)

Antwort

1

Du machst etwas grundlegend falsch :)

Sie können eine Broadcast-Nachricht nicht senden TCP/HTTP (siehe Can I use broadcast or multicast for TCP?), aber man könnte einen UDP-Datagramm (siehe Send Broadcast datagram) stattdessen senden. Es sollte funktionieren, wenn Ihr Router diese Art von Datenverkehr nicht filtert.

Viele Betriebssysteme werden mit einem Tool namens arp-scan geliefert. Sie können sich auf ARP (Address Resolution Protocol) verlassen und dieses Tool verwenden, um die IP-MAC-Verbindungen in Ihrem Netzwerk aufzulisten. Sie könnten einfach die IP verwenden, die zu einem Raspberry Pi gehört.

Verwandte Themen