2016-08-04 8 views
0

Ich habe einen Master-Server-Rechner (Windows 10), mit dem ich mehrere Raspberry PIs über TCP im Knoten js steuere.Sendet den Hostnamen eines TCP-Clients an den Server im Knoten JS

Ich frage mich, was wäre der beste Weg, den Hostnamen jedes Pi (pi-001.local, pi002.local, pi003.local etc ...) an den Server zu senden.

socket.remoteAddress auf dem Server ausgeführt werden gibt die die IP-Adresse des Clients, aber was muß ich die Hostnamen

Offensichtlich jedes pi kann einen eigenen Hostnamen mit der os.hostname() Methode lösen, aber ich brauche den Überblick zu behalten und weiß, welche Hostnamen Jedes net.Socket-Objekt ist auf der Serverseite zugeordnet.

Gibt es einen besseren Weg als nur über socket.write(os.hostname()) senden?

danke!

Antwort

1

Solange der DNS-Server, der vom TCP-Server verwendet wird, die Hostnamen der PI-Geräte kennt, kann der TCP-Server für jede Verbindung einen umgekehrten Lookup von socket.remoteAddress durchführen. Sie können diese umgekehrte Suche im Knoten mit dns.reverse() durchführen.

+0

Ich werde es versuchen, danke! – yurikleb

+0

Also bedeutet dies, dass ich einen DNS-Server auf meinem Master-Rechner einrichten muss? Ich schätze, mein Router scheint im Moment nicht die pi Host-Namen zu kennen, so dass die 'dns.reverse()' im Moment 'undefined' zurückgibt. Ich bekomme die IP-Adresse, wenn ich 'dns.lookup ('pi000001.local, ...)' Tut mir leid, ich bin etwas neu, wie Netzwerke arbeiten – yurikleb

0

Dies ist bereits etwas im SMTP-Protokoll getan, das ein gutes Modell für die TCP-Verhandlung ist. diese Art von Ansatz, das erste, was Ihr Pi tun würde, wenn sie eine Verbindung zum Server ist ein

HELO pi00001.local

schreiben ... auf diese Weise Ihres Server erwartet immer die Informationen up-front vom Pi mit jedem Verbindung oder erneut verbinden.

+0

Hey danke! Ich denke, die Verwendung von SMTP ist vielleicht etwas übertrieben, da ich mich wirklich an eine wirklich grundlegende Kommunikation halten möchte. – yurikleb

+0

Ich meine nur den Teil HELO, nicht das gesamte SMTP-Protokoll zu implementieren;) – Brandon

+0

endete beim Senden einer einfachen "Hallo" Zeichenfolge mit dem Hostnamen Wert vom Client bei der Verbindung. Vielen Dank! – yurikleb

Verwandte Themen